「、」の後ろのすべてを削除するには、awkを使用してください。

「、」の後ろのすべてを削除するには、awkを使用してください。

var以下を含む変数があります。

XXXX YY ZZZZZ\n
aaa,bbb,ccc

私が望むのはaaa2行目だけです。私は試した:

out=$(echo "$var" | awk 'NR==2{sub(",.*","")}' )

しかし、何の結果も得られません。 FSで試してみましたが、,構文を正しく取得できませんでした。私は本当にawk / regexの構文を学びたいです。

印刷以外の場所で "$out"変数としてoutを使用したいと思います。

ベストアンサー1

正規表現をしたくありません。要点はawk自動的に行を複数のフィールドに分割することなので、フィールド区切り記号を に設定し、,2行目の最初のフィールドを印刷するだけです。

$ printf '%s' "$var" | awk -F, 'NR==2{print $1}'
aaa

またはシェルがそれをサポートしている場合<<<

$ awk -F, 'NR==2{print $1}' <<<"$var"
aaa

期待どおりに使用せずに手動で実行するには、awk次のようにします。

$ awk 'NR==2{sub(/,.*/,""); print}' <<<"$var"
aaa

awk印刷する内容を指定していないため、結果は出ません。

おすすめ記事