다음과 같은 .csv 파일이 있습니다.
RepDate;FOO1;ProcessId;ClusterName;ProcessType
19700101;-1;Job_1000969943637142044;PROD;auswertung.mpeTestPlayer.xml
20181231;root;Job_107953405843118835;PROD;mpeEditTablesImport.xml
ProcessType
이제 is mpeEditTablesImport.xml
및 ClusterName
is 에 대한 행을 필터링하려고 합니다 PROD
.
다음 코드를 시도했지만 빈 출력이 제공됩니다.
awk -F "," '{ if(($ProcessType == "mpeEditTablesImport.xml") && ($ClusterName == "PROD")) { print } }' OutputFile.csv > OutputFile_Filtered.csv | tail
내가 뭘 잘못하고 있는지 잘 모르겠습니다. 어떤 도움이라도 도움이 될 것입니다.
답변1
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