Awk

... |啊啊啊1=1=1=1'刪除多餘的空格?

  • March 2, 2022

據我了解,$1是第一個領域。但奇怪的是,awk '$1=$1'省略了額外的空格。

$ echo "$string"
foo    foo bar               bar

$ echo "$string" | awk '$1=$1'
foo foo bar bar

為什麼會這樣?

當我們為欄位變數賦值時,即。的價值 $ 1 is assigned to field $ 1,awk 實際上通過將它們與預設欄位分隔符(或 OFS)空間連接來重建其 $0。

我們也可以在以下場景中得到相同的情況……

echo -e "foo foo\tbar\t\tbar" | awk '$1=$1'
foo foo bar bar

echo -e "foo foo\tbar\t\tbar" | awk -v OFS=',' '$1=$1'
foo,foo,bar,bar

echo -e "foo foo\tbar\t\tbar" | awk '$3=1'
foo foo 1 bar

對於 GNU AWK,此行為記錄在此處:

https ://www.gnu.org/software/gawk/manual/html_node/Changing-Fields.html

$ 1 = $ 1 # 強制記錄被重構

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