AWK 列匹配模式

Kyl*_*Bak 5 linux awk

我正在尝试编写一个命令来查找 csv 文件中与模式匹配的特定列的行。我正在为该专栏的模式匹配而苦苦挣扎

任务:打印第 5 列(col5date)为 2022 年 6 月、7 月或 8 月的行

示例 csv 文件:

第 1 列 列2 第 3 列 第 4 列 col5日期 第 6 栏
A B C D 阿斯德 2022年 阿斯德 22 年 7 月 4 日 某物
A B C D 阿斯德 2022年 阿斯德 10/9/22 某物
A B C D 阿斯德 2022年 阿斯德 12/12/20 某物
A B C D 阿斯德 2020年 阿斯德 2019 年 9 月 1 日 某物
A B C D 阿斯德 2020年 阿斯德 22年9月1日 某物
A B C D 阿斯德 2021年 阿斯德 2019 年 9 月 22 日 某物
A B C D 阿斯德 2021年 阿斯德 22年2月16日 某物
A B C D 阿斯德 2021年 阿斯德 22年6月16日 某物

命令后的预期输出:自日期为六月和七月以来的第一行和最后一行。

我的 awk 命令:

cat file | awk -F'|' '$5 ~ /(6|7|8)\/*\/22$/'
Run Code Online (Sandbox Code Playgroud)

在模式中"/(6|7|8)\/*\/22$/",我试图说
m/d/Y - m 是 6、7 或 8
* - 对于第
22 天 $ - 对于年份和列结束

Gil*_*not 2

像这样,假设文件是csv​​(逗号)而不是tsv(制表符)甚至|(管道)分隔的文件:

awk -F, '$5 ~ /^(6|7|8)\/.*\/22$/' file
Run Code Online (Sandbox Code Playgroud)

但您的示例输入中没有匹配的行