如果我有如下列表:
cat mytext
name first_Aelement
loc second_Aelement
cell third_Alement
name first_Belement
loc second_Belement
loc second_Belement_1
cell third_Blement
name first_Celement
loc second_Celement
cell third_Clement
我怎样才能过滤与前一行相同标题的行。预期产出是:
cat mytext
name first_Aelement
loc second_Aelement
cell third_Alement
name first_Belement
loc second_Belement
cell third_Blement
name first_Celement
loc second_Celement
cell third_Clement
答案 0 :(得分:2)
此awk
应该:
awk 'NR>1 && $0~a {f=1} !f; {a=$1;f=0}' file
name first_Aelement
loc second_Aelement
cell third_Alement
name first_Belement
loc second_Belement
cell third_Blement
name first_Celement
loc second_Celement
cell third_Clement
测试当前行是否包含前一行,如果是,则不要打印它 跳过第一行,因为它与前一行不同。
答案 1 :(得分:0)
sed -n '1h;1!H;x;s/\(\n\)\(.*\)\1\2.*/\1\2/;x;${x;p;}' YourFile
希望你的文件不是数百万行,因为它保存在缓冲存储器中: - )
如果像前一个(缓冲区的最后一个)一样开始查看每一行,并且在这种情况下不要保留它(替换为空)。最后,打印结果