我有一个案例,我得到一个具有以下模式的结果文件:
path:pattern found
例如
./user/home/file1:this is a game
换句话说,当我搜索一些字符串时,我得到了文件和它找到的行。
问题有时我在同一个文件中有多个案例,所以我想删除重复文件(案例会有所不同,所以不可能)。
感谢任何帮助或想法:)
最终结果是:
/user/home/desktop/file1:this is a game
/user/home/desktop/file1:what kind of game
/user/home/desktop/file1:fast action game
只发现第一个结果而不会丢失文件中的所有其他数据。
UPDATE1:
所以实际文件如下所示:
/user/home/desktop/file1:this is a game
/user/home/desktop/file1:what kind of game
/user/home/desktop/file1:fast action game
/user/home/desktop/file2:a game
/user/home/desktop/file3:of game
/user/home/desktop/file4:fast game
我希望摆脱同一文件中的多次出现,所以它应该是这样的:
/user/home/desktop/file1:this is a game
/user/home/desktop/file2:a game
/user/home/desktop/file3:of game
/user/home/desktop/file4:fast game
答案 0 :(得分:9)
您可以使用sort -u
:
grep pattern files | sort -t: -u -k1,1
-t:
- 使用:作为分隔符-k1,1
- 仅根据第一个字段排序-u
- 删除重复项(基于第一个字段)这将只保留一次文件,删除任何重复文件。
对于您的示例,这是您获得的输出:
/user/home/desktop/file1:this is a game
如果您要查找与文件的多个不同匹配项,则:
grep pattern files | sort -u