Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 将重复值重定向到新文件_Linux_Bash_Shell - Fatal编程技术网

Linux 将重复值重定向到新文件

Linux 将重复值重定向到新文件,linux,bash,shell,Linux,Bash,Shell,我有一个abc.log文件,其中包含如下文件名 cat abc.log > a.arc a.arc b.arc c.arc c.arc d.arc e.arc e.arc f.arc 我需要一个shell脚本来扫描abc.log文件,并只将重复的值重定向到def.log 要求: cat def.log > a.arc c.arc e.arc

我有一个abc.log文件,其中包含如下文件名

  cat abc.log
  >
  a.arc
  a.arc 
  b.arc
  c.arc
  c.arc
  d.arc
  e.arc
  e.arc
  f.arc
我需要一个shell脚本来扫描abc.log文件,并只将重复的值重定向到def.log

要求:

        cat def.log
        >
        a.arc
        c.arc
        e.arc                       
               /*only the duplicate values in abc.log*/
编辑:

有什么建议吗


提前感谢

使用
uniq-d

uniq -d abc.log > def.log
请注意,在您的问题中,第2行有一个尾随空格,但第1行没有,这使得
uniq
将它们视为不同的

对于未排序的输入:

sort abc.log | uniq -d > def.log

@timrau的答案比这更好:

awk '++seen[$0] == 2' in > out

这里唯一的优点是输入不需要排序。

您能为未排序的输入提供解决方案吗scenario@NaveenReddy为未排序的输入编辑Hanks正在abc中寻找未排序内容的解决方案。Log如果重复计数为2或3怎么办awk@user3186568即使有更多的重复,此awk命令仅在第二次到达复制行时打印该行。因此,它仍然适用于超过2的复制。仅从示例中,$1应该更好,这将避免空白问题。
awk '++seen[$0] == 2' in > out