3

入力ファイルがタブで区切られているとします。$0 に「hello」という単語が含まれていて、大文字と小文字を区別する必要があるかどうかを確認するにはどうすればよいですか?

here is a hello       whateverColumn2
nonono nonono         whateverItIs
here HeLLo again      mockColumn2

どうもありがとう!

4

1 に答える 1

4

ファイル内の行を考えると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 でテスト済み

于 2012-06-19T18:03:50.563 に答える