我需要在整个文件的最后一个给定前缀之前获取行,可以使用哪个命令(sed或任何其他选项)执行此操作?
例如:(前缀是每行的前两个数字:例如(16316)(0312)等)
文件.txt:
16 316 32个
16 316 0个
0 312 9997个
0 3120个
0 312 21309号
0 3120个
0 313 10108
0 313 0
0 313 32732
0 313 0
0 314 9277
0 314 0
0 314 19781个
0 314 0
0 315 7个
0 315 0个
0 315 9380个
0 315 0个
0 315 30388个
0 315 0个
输出应为:
16 316 32个
0 312 21309号
0 313 32732
0 314 19781个
0 315 30388个
谢谢

最佳答案

我想那些空行不在你的档案里。

tac file.txt | awk '$1 " " $2 != prefix {getline; print; prefix = $1 " " $2}' | tac

16 316 32
0 312 21309
0 313 32732
0 314 19781
0 315 30388

反转文件。当我看到一个新前缀时,打印下一行。然后反转输出。

关于linux - 从文件中过滤具有给定前缀的特定行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26743410/

10-15 14:13