フィールドセパレータFS
を正規表現awk
で参照できるかどうかは、式の本体で可能ですか?フィールドセパレータは、行の最初の列にあるときFSを正規表現で使用するには?
awk -F: '/^FS/{print FS}'
フィールドセパレータFS
を正規表現awk
で参照できるかどうかは、式の本体で可能ですか?フィールドセパレータは、行の最初の列にあるときFSを正規表現で使用するには?
awk -F: '/^FS/{print FS}'
内部/ /
- FS
も例外ではありません。
あなたのスクリプトは、正規表現に文字列を変換することができます~
を使って書くことができます
awk -F: '$0 ~ "^" FS { print FS }'
は、NF
は1
より大きく、最初のフィールドでなければならないゼロの長さを持っている:あなたは任意の変数を使用することはできません
awk -F: 'NF>1 && !(length($1)) {print FS}'
私はちょうど簡単な例を使用していました。私は '{{':'}}'としてコロンを書く必要があるAnsibleプレイブックに埋め込まれたシェルスクリプトにこれを必要とします。 Unixファイルで動作する 'awk'スクリプトを書くことは、この制限を伴う純粋な苦痛です。 '{{':'}} 'の代わりに各コロンに' FS'を使うのは少し苦痛です。 – ceving
? XY問題のように見えます。最初に '{{':'}}'と書くのはどうですか? – hek2mgl
[ここ](http://stackoverflow.com/q/24835706/402322)を参照してください。一つのコメントに 'awk'の例があります。これはYAMLの構文上の問題です。 – ceving
これを追加したかっただけです。確かに、それは行うことができます。 – hek2mgl
一つの制限:少なくともPOSIXの 'awk'が必要です。古いSolarisのawkは動作しません。しかし、 '/ usr/xpg4/bin/awk'は動作します。 – ceving
@cevingあなたは、古い、壊れたawk(Solarisの/ bin/awk)が何をすることができるかどうかは言及していません。それは古くて壊れていて、それをやめるためにそれを使っている人々に伝えることとは別に、完全に無視されなければならない。すべての該当する回答に「古い、壊れたawkを除いて」という警告を追加した場合、ほぼすべての回答に追加されます。 –