次の.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
最初のフィールドを使用する代わりに、2番目のフィールドにおよびなどを使用$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