var
以下を含む変数があります。
XXXX YY ZZZZZ\n
aaa,bbb,ccc
私が望むのはaaa
2行目だけです。私は試した:
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
印刷する内容を指定していないため、結果は出ません。