Bash

將結果從 awk 保存到變數

  • March 4, 2022

我有一個變數(包含多行文本),我正在使用 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')

引用自:https://unix.stackexchange.com/questions/692678