Sed 如果后续行具有相同的初始当前行,如何删除该行

Sed 如果后续行具有相同的初始当前行,如何删除该行,sed,Sed,如果我有以下列表: 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 myt

如果我有以下列表:

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

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
测试当前行是否包含前一行,如果包含前一行,请不要打印它。
跳过第一行,因为它与前一行不同

sed -n '1h;1!H;x;s/\(\n\)\(.*\)\1\2.*/\1\2/;x;${x;p;}' YourFile
希望您的文件不是数百万行,因为它保存在缓冲内存中:-)


如果像前一行(缓冲区的最后一行)一样开始,请查看每一行,在这种情况下不要保留它(替换为零)。最后,打印结果

a=$0
应该是
a=$1
@BMW您是正确的,已修复<代码>标题相同的行<宝马>我想一旦JoNne解决了,你应该考虑删除评论。否则,错误看起来仍然存在。