不排序去除文件中的重複行

awk ' !x[$0]++' file3code

簡要解釋一下,awk 的基本執行流程是,對文件的每一行,作一個指定的邏輯判斷,若是邏輯判斷成立,則執行指定的命令;若是邏輯判斷不成立,則直接跳過這一行。awk

咱們這裏寫的 awk 命令是 !x[$0]++,意思是,首先建立一個 map 叫 x,而後用當前行的全文 $0 做爲 map 的 key,到 map 中查找相應的 value,若是沒找到,則整個表達式的值爲真,能夠執行以後的語句;若是找到了,則表達式的值爲假,跳過這一行。因爲表達式以後有 ++,所以若是某個 key 找不到對應的 value,該 ++ 操做會先把對應的 value 設成 0,而後再自增成 1,這樣下次再遇到重複的行的時候,對應的 key 就能找到一個非 0 的 value 了。file

咱們前面說過,awk 的流程是先判斷表達式,表達式爲真的時候就執行語句,但是咱們前面寫的這個 awk 命令裏只有表達式,沒有語句,那咱們執行什麼呢?原來,當語句被省略的時候,awk 就執行默認的語句,即打印整個完整的當前行。就這樣,咱們經過這個很是簡短的 awk 命令實現了去除重複行並保留原有文件順序的功能。map

 

 

寫入其餘文件文件

awk ' !x[$0]++' file3 > file4co

相關文章
相關標籤/搜索