特定の値を含むフィールドを印刷できますか?
次のファイルを検討してください。
foo,boo,123,1234312,ABC
foo,boo,ABC,bla,bla
含まれているがすべてのレコードに固定されていないフィールドがあるため、ABC
コマンドは$5
最初のレコードと$3
2番目のレコードの両方に印刷する必要があります。
答え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
grep
PCRE(Perl Compatible Regular Expressions)と組み合わせて使用できます。
grep -Po '(?<=^|,)ABC(?=,|$)' file.txt