awkの結果を変数に保存する

awkの結果を変数に保存する

フィールド間のスペースをコンマに置き換えるために、awkを使用して変更する変数(複数行のテキストを含む)があり、それを別の変数に保存しようとしています。これが私が今やっていることです:

VAR2=$(echo "$VAR1" | awk 'END {OFS=","}' 1)

ただし、これによりecho "$VAR2"空白行のみが印刷されます。

ベストアンサー1

AWKスクリプトは何も出力しません。しかし、Bashのようなシェルを使用すると仮定すると、スペースをカンマに置き換えるためにAWKは必要ありません。

VAR2="${VAR1// /,}"

またはどんな殻でも、

VAR2=$(printf "%s" "$VAR1" | tr -s '[:blank:]' ,)

前者は複数のスペースを縮小しません。これが重要な場合は有効にしextglobshopt -s extglob)して使用します。

VAR2="${VAR1//+( )/,}"

AWKを使用するには印刷する必要があります。後ろに 新しい出力区切り文字を使用してレコードを強制的に更新します。:

VAR2=$(printf %s "$VAR1" | awk -v OFS=, '{$1=$1} 1')

おすすめ記事