入力ファイルがタブで区切られているとします。$0 に「hello」という単語が含まれていて、大文字と小文字を区別する必要があるかどうかを確認するにはどうすればよいですか?
here is a hello whateverColumn2
nonono nonono whateverItIs
here HeLLo again mockColumn2
どうもありがとう!
ファイル内の行を考えるとdata.txt
:
awk -F"\t" '/hello/ {print $0}' data.txt
印刷します
here is a hello whateverColumn2
here hello again mockColumn2
入力行の-F"\t"
フィールド区切りとしてタブを設定します。
更新(OPによる以下のコメントのリクエストに基づく):
この大文字と小文字を区別IGNORECASE
しないようにするには、次のフラグを使用します。
awk -F"\t" 'BEGIN{IGNORECASE=1} /hello/ {print $0}' data.txt
IGNORECASE 変数は GNU 拡張機能であり、AWK の他のバージョンでは使用できない場合があることに注意してください。
または、 を使用した例match
。この大文字と小文字を区別しないようにするために、入力は小文字に変換されます。
awk -F"\t" '{if (match(tolower($0), "hello")) print $0}' data.txt
match は正規表現を取ることができるので、正しい正規表現では小文字への変換は必要ないかもしれません。
Linux で GNU Awk 3.1.6 でテスト済み