Bash
根據 2 列中的值過濾巨大 csv 文件的行
我有一個 .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
我不確定我做錯了什麼,任何幫助都是有用的。
awk 通過將行拆分為欄位來工作,然後由欄位編號而不是欄位中的文本引用這些欄位。因此,您不使用
$field1
第一個欄位,而是使用$1
然後$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