Text-Processing

做什麼0=0=0=1 在 awk 中是什麼意思?

  • March 22, 2020

假設我有一個這樣的輸入文本文件(sample_simple.txt):

3 1 10 1 6
9 4 2  4 1
9 2 2  2 1

通過使用 command: awk '$0=$1" "$1*$2" "$3*$4' sample_simple.txt,我得到以下輸出:

3 3 10
9 36 8
9 18 4

然後使用命令:awk '$1*$2" "$3*$4' sample_simple.txt,輸入文件沒有任何變化:

3 1 10 1 6
9 4 2  4 1
9 2 2  2 1

命令之間的唯一變化是'$0=$1',任何人都可以解釋一下嗎?

不是真的$0=$1;想起來更像

$0 = ($1" "$1*$2" "$3*$4)

所以

$0=$1" "$1*$2" "$3*$4

將字元串連接的結果分配$1" "$1*$2" "$3*$4給變數$0並執行預設操作{print $0},而

$1*$2" "$3*$4

連接$1*$2and的結果$3*$4(之間有空格" ")並執行預設操作{print $0},因為結果是非空字元串。的值$0未修改。

在 awk

  • $0是整行
  • 可以即時更改線路

因此

  • $1" "$1*$2" "$3*$4創建 3 個欄位$1$1*$2並且$3*$4
  • $0=結果被放入行中,並隱式列印(見編輯)。

編輯 :

如果省略$0=,則輸出行不會更改。

正如 Steeldriver 指出的那樣,由於 search 是肯定的,所以 line 是 printd。

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