Linux 从文件中筛选具有给定前缀的特定行
我需要在整个文件中给定前缀的最后一行之前获取该行,我可以使用哪个命令(sed或任何其他选项)来获取该行 例如:(前缀是每行的前两个数字:例如,(16316)(0312),等等) file.txt: 16 316 32 163160 0 312 9997 0 3120 0 31221309 0 3120 0 313 10108 03130 0 313 32732 03130 03149277 0 314 0 0 314 19781 0 314 0 0 315 7 03150 0 315 9380 03150 0 315 30388 03150 输出应为: 16 316 32 0 31221309 0 313 32732 0 314 19781 0 315 30388Linux 从文件中筛选具有给定前缀的特定行,linux,bash,sed,Linux,Bash,Sed,我需要在整个文件中给定前缀的最后一行之前获取该行,我可以使用哪个命令(sed或任何其他选项)来获取该行 例如:(前缀是每行的前两个数字:例如,(16316)(0312),等等) file.txt: 16 316 32 163160 0 312 9997 0 3120 0 31221309 0 3120 0 313 10108 03130 0 313 32732 03130 03149277 0 314 0 0 314 19781 0 314 0 0 315 7 03150 0 315 9380
谢谢我假设这些空行实际上不在您的文件中
tac file.txt | awk '$1 " " $2 != prefix {getline; print; prefix = $1 " " $2}' | tac
反转文件。当我看到一个新前缀时,打印下一行。然后反转输出。我假设这些空行实际上不在您的文件中
tac file.txt | awk '$1 " " $2 != prefix {getline; print; prefix = $1 " " $2}' | tac
反转文件。当我看到一个新前缀时,打印下一行。然后反转输出。我假设这些空行实际上不在您的文件中
tac file.txt | awk '$1 " " $2 != prefix {getline; print; prefix = $1 " " $2}' | tac
反转文件。当我看到一个新前缀时,打印下一行。然后反转输出。我假设这些空行实际上不在您的文件中
tac file.txt | awk '$1 " " $2 != prefix {getline; print; prefix = $1 " " $2}' | tac
反转文件。当我看到一个新前缀时,打印下一行。然后反转输出。此
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
这个
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
这个
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
这个
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
你能澄清这个过滤器的逻辑吗?对于每个前缀,它类似于
:选择最后一个
之前的行。你能澄清这个过滤器的逻辑吗?对于每个前缀,它类似于:选择最后一个
之前的行。你能澄清这个过滤器的逻辑吗?对于每个前缀,它类似于:选择最后一行之前的那一行
你能澄清一下这个过滤器的逻辑吗?对于每个前缀,它有点像:选择最后一行之前的那一行
我只是好奇我们是否真的需要tac
这里他要的是前一行tac
让我们打印下一行我只是好奇我们是否真的需要tac
这里他要的是上一行tac
让我们打印下一行我只是好奇我们是否真的需要tac
这里他要的是上一行tac
让我们打印下一行我只是好奇我们是否真的需要tac
这里他要的是上一行tac
让我们打印出下一行