我需要在整个文件的最后一个给定前缀之前获取该行,我可以使用哪个命令(sed或任何其他选项)?
例如:(前缀是每行的前两个数字:例如,(16 316)(0 312)等)
file.txt的:
16 316 32
16 316 0
0 312 9997
0 312 0
0 312 21309
0 312 0
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
由于
答案 0 :(得分:2)
我假设这些空行实际上不在您的文件中。
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
撤消文件。当我看到新的前缀时,打印下一行。然后反转输出。
答案 1 :(得分:1)
此awk
应该有效:
awk '$3>0{a[$1,$2]=$0} END{for (i in a) print a[i]}' file
16 316 32
0 312 21309
0 313 32732
0 314 19781
0 315 30388