我有一个 .csv 文件,如下所示:
RepDate;FOO1;ProcessId;ClusterName;ProcessType
19700101;-1;Job_1000969943637142044;PROD;auswertung.mpeTestPlayer.xml
20181231;root;Job_107953405843118835;PROD;mpeEditTablesImport.xml
现在我们要在ProcessType
ismpeEditTablesImport.xml
和ClusterName
is时过滤行PROD
。
我尝试了以下代码,但它给出了空输出:
awk -F "," '{ if(($ProcessType == "mpeEditTablesImport.xml") && ($ClusterName == "PROD")) { print } }' OutputFile.csv > OutputFile_Filtered.csv | tail
我不确定我做错了什么,任何帮助都是有用的。
答案1
awk 的工作原理是将行分割成字段,然后由字段引用数字而不是通过字段中的文本。因此,您不要使用$field1
第一个字段,而是使用$1
and 然后$2
用于第二个字段,依此类推。你想要的是:
$ awk -F';' '$5=="mpeEditTablesImport.xml" && $4=="PROD"' file
20181231;root;Job_107953405843118835;PROD;mpeEditTablesImport.xml
在这种情况下,您也可以简单地使用grep
:
$ grep ';PROD;mpeEditTablesImport.xml$' file
20181231;root;Job_107953405843118835;PROD;mpeEditTablesImport.xml