我需要删除具有重复前缀的文件中的相似行并保留唯一的行。
由此,
abc/def/ghi/
abc/def/ghi/jkl/one/
abc/def/ghi/jkl/two/
123/456/
123/456/789/
xyz/
对此
abc/def/ghi/jkl/one/
abc/def/ghi/jkl/two/
123/456/789/
xyz/
感谢任何建议,
最佳答案
在允许重新排序输出的情况下回答。
sort -r file | awk 'a!~"^"$0{a=$0;print}'
sort -r file
:以这种方式对行进行反向排序,具有相同模式的较长行将放在相同模式的较短行之前awk 'a!~"^"$0{a=$0;print}'
:解析排序后的输出,其中a
保存前一行,$0
保存当前行a!~"^"$0
检查每一行当前行是否不是上一行开头的子字符串。- 如果
$0
不是子字符串(即不是相似的前缀),我们打印
它并将新字符串保存在a
中(成为与下一行相比)
第一行$0
不在a
中,因为没有给a
赋值(第一行总是打印)
关于bash - 删除具有相似前缀的重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48656682/