2017-08-14 77 views
-2

我有一個大的輸出文件(~25000行)的字母數字文本,每個步驟至少有4個實例,但可能是第5個,後面跟着我的所有數據。我只想輸出每個步驟的最後一個迭代到一個文本文件,並刪除所有其他人如何做到這一點?刪除模式中的Previouse實例

實施例:每次迭代應爲在自己的行

輸入文件:data.dat文件

1 step1.1 
1 step1.2 
1 step1.3 
1 step1.4 
2 step2.1 
2 step2.2 
2 step2.3 
2 step2.4 
2 step2.5 

希望的輸出:

1 step1.4 
2 step2.5 

回答

0
  1. 這可能破壞的順序:只記得每個鍵的最近行:

    awk '{line[$1] = $0} END {for (key in line) print line[key]}' data.dat 
    
  2. 扭轉文件和打印第一一次看到一個鍵,然後再反向輸出(這是一個「著名的」 AWK成語)

    tac data.dat | awk '!seen[$1]++' | tac 
    
+0

第二個選項工作完美,謝謝你的幫助! – John