Awk

awk NR%2{}1 含義

  • March 17, 2022

我試圖理解這段程式碼:

awk 'NR%2{printf "%s ",$0;next;}1' yourFile

現在我嘗試自定義它。

鑑於此 error.txt 內容:

KEY 4048:1736 string
3
KEY 0:1772 string
1
KEY 4192:1349 string
1
KEY 7329:2407 string
2
KEY 0:1774 string
1

然後:

awk 'NR%2{printf NR "%s ", $0; next}1' error.txt

… 將返回:

1KEY 4048:1736 string 3
3KEY 0:1772 string 1
5KEY 4192:1349 string 1
7KEY 7329:2407 string 2
9KEY 0:1774 string 1

我想NR%2是指偶數行號,但我不確定1指的是什麼。

沒有1, awk 'NR%2{printf NR "%s ", $0; next}' error.txt 將返回一行。

1KEY 4048:1736 string 3KEY 0:1772 string 5KEY 4192:1349 string 7KEY 7329:2407 string 9KEY 0:1774 string 

總的來說,我仍然沒有得到它。

到目前為止,我已經查看了這些頁面:

Modulus/Remainder 算術運算符%,它找到兩個或多個數字的模除法。in awk 表示目前記錄編號,除以 2 寫為條件語句,對於偶數記錄編號,結果為 0,因此 0 是錯誤結果,因此不執行後續操作,並且;NR

1最後,將執行一個被稱為“始終為真”條件的習語,該條件將在前幾行的末尾列印偶數行號(只要結果為 0,它就會執行)NR%2,這些行號在printf不換行的情況下列印。請參閱awk 腳本末尾的“1”是什麼意思

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