このコンテキストでは、指定したフィールド区切りはどのように機能しますか?ここでawkのフィールド区切りは何ですか?
awk -F\' '{print "conn kill "$2"\nrepair mailbox "$2" repair=1"}'
このコンテキストでは、指定したフィールド区切りはどのように機能しますか?ここでawkのフィールド区切りは何ですか?
awk -F\' '{print "conn kill "$2"\nrepair mailbox "$2" repair=1"}'
-F\'
フィールドセパレータとして単一引用符'
を使用しています。
また、'
の前には、\
があるため、awkは、アクション部分の先頭として'
とは考えません。
別の方法としては、二重引用符で'
を囲むことができます。
$ echo "foo'bar'baz" | awk -F\' '{print $1}'
foo
$ echo "foo'bar'baz" | awk -F"'" '{print $1}'
foo
AWKは、行毎にファイルを処理します。そして、各行はフィールドに分割され、ドルの変数$1
... $9
($0
はIIRC全体の行です)でアクセスできます。デフォルトでは、空白で区切りを使用して行をフィールドに分割しますが、-F
コマンドラインオプションまたはFS
変数を使用して、分割する文字を指定することができます。
だからあなたの場合には、フィールドセパレータは、単一引用符('
)に設定されています。したがって、foo'bar'baz
のような入力ラインは、$1 == "foo"
,$2 == "bar"
および$3 == "baz"
と設定されます。