我需要帮助减去下面awk结果的2。有人能给我指点一下吗?
- 查找第12列 中指定单词过滤的行总数
- 查找第12列中指定单词过滤的行总数,并且在第13列中具有指定日期
- 减去1和2并打印结果
这解决了问题1
awk -F ',' '$12 ~ /<WORD>/ {count++} END {print count}' file.csv
这解决了问题2
awk -F ',' '$12 ~ /<WORD>/ && $13 ~ /<DATE>/ {count2++} END {print count2}' file.csv
不幸的是,我没有得到下面问题3的结果。
awk -F ',' '$12 ~ /<WORD>/ {count++} END {print count}' file.csv; awk -F ',' '$12 ~ /<WORD>/ && $13 ~ /<DATE>/ {count2++} END {print count2}' file.csv; awk {print $count-$count2}
如果运行多个awk命令,则使用的变量是不共享的。如果您希望共享它们,您可以将这些命令合并到一个程序中:
awk -F ',' '
$12 ~ /<WORD>/ {count++}
'$12 ~ /<WORD>/ && $13 ~ /<DATE>/ {count2++}
END {print $count-$count2}
' file.csv
然而,你的三个规格似乎可以简化为:
打印csv文件
file.csv
中包含第12列特定单词且不的行数。在第13列中包含特定日期
awk -F, '$12~/word/ && $13!~/date/ {n++} END {print n+0}' file.csv
其中/word/
和/date/
是分别提供所需单词和日期的正则表达式。