awk:必要な列数を設定しますか?

awk:必要な列数を設定しますか?

次の形式で単純なconfファイルを解析しています。

key = value

これを行うには、awk次のようなものを使用します。

KEY=$(awk -F' *= *' '/^key/{print $2}' file.conf)

ただし、一部の値には記号を含めることができるので、基本的に私が望むのは2つの列だけが欲しいと=言うことです。つまり、最初の区切り文字の後に出会うすべてを1つの列として受け入れるように強制することです。awkそのようなオプションが見つかりませんでした。どうすればいいですか?

ベストアンサー1

フィールドに区切り文字が表示される場合、これは実際の区切り文字ではありません。私は次のようなものを使用します。

KEY=$(sed -n '/^key *=/ { s/^key *= *//; p }' file.conf)

代わりに、これで始まる行を探し、keyその後にスペースと=記号が続くものを見つけて、行の先頭を削除して印刷します。 〜のようにデイブ・トンプソン_085p条件になる可能性があることを指摘してくださいs

KEY=$(sed -n 's/^key *= *//p' file.conf)

同等のAWKは次のとおりです。

KEY=$(awk '/^key *=/ { sub("^key *= *", ""); print }' file.conf)

同じ組み合わせ技術を使用することができる。

KEY=$(awk 'sub("^key *= *", "")' file.conf)

おすすめ記事