grep:删除两次相同数字的行

时间:2018-03-11 14:00:20

标签: bash unix grep

我有一个.txt文件,每行都有一些数字。我需要的是滤除不含相同数字的这些。所以我希望输出只是所有数字不同的行。我必须使用命令grep

示例:

File_input:

1 1 2 3 4 5

1 2 3 4 5 6

6 6 6 6 6 6

我想要什么

File_output:

1 2 3 4 5 6

第一行和第三行包含相同的数字,因此必须将其过滤掉。

2 个答案:

答案 0 :(得分:0)

这适用于您的示例:

grep -v "\([0-9]\).*\1" myfile

想法是捕获任何单个数字[0-9]并将其存储为\(\)并在同一行上搜索现有的相同模式\1。您可以轻松扩展到任何由数字组成的单词。

答案 1 :(得分:0)

使用给定的输入,您可以使用

sed -r '/([0-9]+).+\1/d' File_input

你会遇到suubstrings的问题:1匹配12和12匹配1.
您可以使用

添加单词边界\b
sed -r '/\b([0-9]+)\b.*\b\1\b/d' File_input