删除模式中的Previouse实例

时间:2017-08-14 15:30:14

标签: bash awk

我有一个大的输出文件(~25000行)的字母数字文本,每个步骤至少有4个实例,但可能是5,然后是我的所有数据。我想只输出每个步骤的最后一次迭代到文本文件并删除所有其他步骤我将如何做到这一点?

示例:每次迭代都应该在自己的行上

输入文件: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

1 个答案:

答案 0 :(得分: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