a c*_*der 8 duplicate awk text-processing deduplication
这个问题/答案有一些很好的解决方案来删除文件中的相同行,但在我的情况下不起作用,因为否则重复的行有一个时间戳。
是否可以告诉 awk 在确定重复项时忽略一行的前 26 个字符?
例子:
[Fri Oct 31 20:27:05 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:10 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:13 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:16 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:21 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:22 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:23 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:24 2014] The Brown Cow Jumped Over The Moon
Run Code Online (Sandbox Code Playgroud)
会成为
[Fri Oct 31 20:27:24 2014] The Brown Cow Jumped Over The Moon
Run Code Online (Sandbox Code Playgroud)
(保留最近的时间戳)
Ant*_*hon 14
您可以使用uniq
它的-f
选项:
uniq -f 4 input.txt
Run Code Online (Sandbox Code Playgroud)
来自man uniq
:
-f, --skip-fields=N
avoid comparing the first N fields
Run Code Online (Sandbox Code Playgroud)
实际上这将显示第一行:
uniq -f 4 input.txt
Run Code Online (Sandbox Code Playgroud)
如果这是一个问题,你可以这样做:
tac input.txt | uniq -f 4
Run Code Online (Sandbox Code Playgroud)
或者如果你没有tac
但你的tail
支持-r
:
tail -r input.txt | uniq -f 4
Run Code Online (Sandbox Code Playgroud)