Вы можете использовать
awk '!/#####/ || !seen[$0]++'
Или, как Эд Мортон предлагает , синоним:
awk '!(/#####/ && seen[$0]++)'
Здесь !seen[$0]++
делает то же, что и обычно, он удалит любую дублированную строку.Часть !/#####/
соответствует строкам, которые содержат шаблон #####
, и отменяет совпадение.Два шаблона в сочетании с ||
удаляют все повторяющиеся линии, имеющие внутри шаблон #####
.
См. online awk
demo :
s="deleteme.txt ##########
1219: 'PCM BE PTP'
deleteme.txt ##########
1221: , 'PCM FE/MID PTP UT','PCM IA 1 PTP'
deleteme2.txt ##########
1222: , 'PCM BE PTP UT'
1221: , 'PCM FE/MID PTP UT','PCM IA 1 PTP'
deleteme2.txt ##########
1223 #####: , 'PCM BE PTP'
1221: , 'PCM FE/MID PTP UT','PCM IA 1 PTP'
deleteme2.txt ##########
1225: , 'PCM FE/MID PTP'"
awk '!/#####/ || !seen[$0]++' <<< "$s"
Выход:
deleteme.txt ##########
1219: 'PCM BE PTP'
1221: , 'PCM FE/MID PTP UT','PCM IA 1 PTP'
deleteme2.txt ##########
1222: , 'PCM BE PTP UT'
1221: , 'PCM FE/MID PTP UT','PCM IA 1 PTP'
1223 #####: , 'PCM BE PTP'
1221: , 'PCM FE/MID PTP UT','PCM IA 1 PTP'
1225: , 'PCM FE/MID PTP'