awkで大文字と小文字を区別しない検索

awkで大文字と小文字を区別しない検索

awkを使用してキーワードを検索する必要がありますが、大文字と小文字を区別せずに(大文字と小文字を区別しない)検索を実行したいと思います。

私の考えに最適な方法は、クエリ(「キーワード」)とawkが同時に読み取るターゲット行の両方を大文字にすることです。 ~からこの問題すべて大文字で印刷を使用する方法はありますが、toupperその答えは印刷のみを表示し、変数に大文字のテキストを残さないため、一致に使用する方法がわかりません。

以下は、次の入力が与えられた例です。

blablabla    
&&&Key Word&&&
I want all 
these text and numbers 123
and chars !"£$%&
as output
&&&KEY WORD&&&
blablabla

私は次のような出力が欲しい。

I want all 
these text and numbers 123
and chars !"£$%&
as output

これが私が持っているものですが、追加する方法がわかりませんtoupper

awk "BEGIN {p=0}; /&&&key word&&&/ { p = ! p ; next } ; p { print }" text.txt

ベストアンサー1

式を/&&&key word&&&/パターンに一致させるために、現在の行を明示的に使用する他の式に置き換えます(例:)。$0

tolower($0) ~ /&&&key word&&&/

または

toupper($0) ~ /&&&KEY WORD&&&/

だからあなたは

awk 'tolower($0) ~ /&&&key word&&&/ { p = ! p ; next }; p' text.txt

$0""変数はデフォルトで初期化または最初に使用され、以下の説明で説明されているデフォルトの動作であるため、BEGINブロックを削除できるため、0一重{print}引用符が必要です。

おすすめ記事