특정 값이 포함된 필드 인쇄

특정 값이 포함된 필드 인쇄

특정 값이 포함된 필드를 인쇄할 수 있습니까?

다음 파일을 고려하십시오.

foo,boo,123,1234312,ABC
foo,boo,ABC,bla,bla

포함되었지만 모든 레코드에 대해 고정되지 않은 필드가 있으므로 ABC명령은 $5첫 번째 레코드와 $3두 번째 레코드 모두에 인쇄해야 합니다.

답변1

응, 너처럼이전 질문, 그러나 모든 필드와 일치합니다.

$ awk -F, '{for(i=1;i<=NF;i++){if($i~/ABC/){print $i}}}' file
ABC
ABC

위의 내용도 파일을 인쇄합니다.포함하다 ABC, 좋아요 fooABC또는 fooABCbar뭔가. 다음 필드만 인쇄 ABC, 사용:

awk -F, '{for(i=1;i<=NF;i++){if($i=="ABC"){print $i}}}' file

Perl에서도 마찬가지입니다.

perl -F, -lane 'print grep{/ABC/}@F' file     ## field matches
perl -F, -lane 'print grep{$_=="ABC"}@F' file ## field is

답변2

grepPCRE(Perl Compatible Regular Expressions)와 함께 사용할 수 있습니다 .

grep -Po '(?<=^|,)ABC(?=,|$)' file.txt

관련 정보