
フィールド間のスペースをコンマに置き換えるために、awkを使用して変更する変数(複数行のテキストを含む)があり、それを別の変数に保存しようとしています。これが私が今やっていることです:
VAR2=$(echo "$VAR1" | awk 'END {OFS=","}' 1)
ただし、これによりecho "$VAR2"
空白行のみが印刷されます。
答え1
AWKスクリプトは何も出力しません。しかし、Bashのようなシェルを使用すると仮定すると、スペースをカンマに置き換えるためにAWKは必要ありません。
VAR2="${VAR1// /,}"
またはどんな殻でも、
VAR2=$(printf "%s" "$VAR1" | tr -s '[:blank:]' ,)
前者は複数のスペースを縮小しません。これが重要な場合は有効にしextglob
(shopt -s extglob
)して使用します。
VAR2="${VAR1//+( )/,}"
AWKを使用するには印刷する必要があります。後ろに 新しい出力区切り文字を使用してレコードを強制的に更新します。:
VAR2=$(printf %s "$VAR1" | awk -v OFS=, '{$1=$1} 1')
答え2
var2=$(awk '{gsub(/[[:space:]]+/,",",$0);print }' filename)
出力
echo $var2
praveen,ajay,san