Удалить полную строку в текстовых файлах на основе тегов

Например: 01.txt, 02.txt, 03.txt и 04.txt имеют следующие значения.

HDR|A|B|C|D|F||||||| DTL|1|2|3|4|5||||||||||| DTL|5|6|7|8|9||||||||||| TLR|A|B|C|D|F||||||| 

Мне нужно удалить полные строки на основе тегов, таких как HDR, TLR.

После того, как линии HDR и TLR будут удалены из четырех файлов, он должен объединиться в один файл.

мы должны объединиться таким образом, чтобы поддерживать заказы файлов после удаления линий HDR, TLR. (01_latest.txt, 02_latest_txt, 03_latest.txt и 04_latest.txt)

Как мы можем достичь в сценарии UNIX?

Вы также можете удалить эти строки с помощью grep :

 $ grep -vE "HDR|TLR" *.txt > merged.txt 

Это пропустит любые строки, содержащие «HDR» или «TLR». | является оператором или, поэтому вы можете также расширить его, например, «STR1 | STR2 | STR3». Прохождение через файлы гарантируется, пока имена будут последовательно 01.txt , 02.txt и т. Д.

Вы можете убедиться в этом в следующем примере.

 $ ls -1 01.txt 02.txt 03.txt 04.txt 05.txt 06.txt 07.txt 08.txt 09.txt 11.txt 12.txt 13.txt 14.txt 15.txt 16.txt 17.txt 18.txt 19.txt $ echo *.txt 01.txt 02.txt 03.txt 04.txt 05.txt 06.txt 07.txt 08.txt 09.txt 11.txt 12.txt 13.txt 14.txt 15.txt 16.txt 17.txt 18.txt 19.txt 

Здесь вы можете увидеть, что оболочка расширила *.txt в следующем порядке, который вы ищете.

Вы можете удалить эти строки и объединить все, используя

 sed '/^\(HDR\|TLR\)|/d' [0-9]*.txt > merged.txt 

Здесь предполагается, что первая запись строки, которая должна быть удалена, является точно HDR или TLR .