Bash
將結果從 awk 保存到變數
我有一個變數(包含多行文本),我正在使用 awk 修改它以用逗號替換欄位之間的空格,並且我正在嘗試將其保存到另一個變數中。這就是我目前正在做的事情:
VAR2=$(echo "$VAR1" | awk 'END {OFS=","}' 1)
但是,當我這樣做時
echo "$VAR2"
,它只列印一個空行。
您的 AWK 腳本不輸出任何內容。但是您不需要 AWK 來用逗號替換空格;假設您使用的是 Bash 等 shell,您可以使用
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')