根据不同文件的标签删除行并合并为单个文件

根据不同文件的标签删除行并合并为单个文件

我必须以这种方式开发 unix 脚本,它应该满足以下场景。

我有 3 个文本文件, 1.txt 、 2.txt 和 3.txt

这些文件中的数据如下。

HDR|1|2|3|||||||||||||||||||||||
DTL|||||||||||||||||||||||||||||||
DTL|||||||||||||||||||||||||||||||
TLR|||||||||||||||||||||||||||||||

对于第一个文件 ( 1.txt),我们必须删除基于 TLR 标记的行。对于第二个文件 ( 2.txt),我们必须根据 TLR 和 HDR 删除线条。对于第三个文件 ( 3.txt),我们必须删除基于 HDR 标签的行。

完成上述操作后,我必须将这三个文件数据放入单个文件中。

这里我们不确定要合并多少个文件。我们不能直接硬编码文件名(如上面的 3 个文本文件)。

我们怎样才能实现这个脚本呢?

答案1

这可以简单地通过使用来完成回答你的最后一个相关问题还有一些输出重定向:

grep -vE "TLR" 1.txt > merged.txt
grep -vE "TLR|HDR" 2.txt >> merged.txt
grep -vE "HDR" 3.txt >> merged.txt

您还可以使用子 shell 将这些命令组合在一起:

( grep -vE "TLR" 1.txt ;  grep -vE "TLR|HDR" 2.txt ; grep -vE "HDR" 3.txt  )> merged.txt

相关内容