awk see 選項如何運作

awk see 選項如何運作

我最近遇到了一個awk見過選項。我可以看到它正在刪除文件中的重複項。我可以對其工作原理進行一些澄清。

cat tes
1
2
3
1
1
1
3
4

使用 awk 看到輸出

cat tes | awk '!seen[$0]++'

1
2
3
4

答案1

seen是關聯數組的任意名稱。這不是任何一種選擇。您可以使用ab或大多數其他名稱來代替它。

該程式碼!seen[$0]++由測試和增量組成。

如果seen[$0],即與目前輸入行 key 關聯的陣列元素的值$0為零(或空),則 的布林!seen[$0]值為真的

然後數組中與該鍵對應的值$0遞增,這意味著測試將是錯誤的$0找到相同值的所有其他時間。

測試的效果是真的第一次在輸入中看到特定行,並且錯誤的所有其他時間。

每當沒有關聯操作的測試真的, 這預設動作被觸發。預設操作相當於{ print }or { print $0 },它會列印目前記錄,對於本範例中的所有帳戶和目的來說,該記錄是目前未修改的輸入行。

相關內容