从 File1 中获取特定行,从 File2 中获取其他行,并将其打印到 File3 中

从 File1 中获取特定行,从 File2 中获取其他行,并将其打印到 File3 中

我尝试从 File1 中获取特定行,从 File2 中获取其他行,然后将它们打印在 File3 中(按连续顺序)。

假设我需要文件 1 中的第 1 行和第 3 行以及文件 2 中的第 6 行和第 8 行,然后将它们打印在文件 3 中。

我想出了这个表格:

grep -H 'x*' File1.txt File2.txt | sed '/File1.txt:[13]/d;/File2.txt:[68]/d;s/[^:]*://' > File3.txt

这会删除“不需要的”行并将其打印到第三个文件中,这对于几行来说效果很好,但是对于更多的行,它会在输出文件中以奇怪的方式将它们混合在一起。在这个例子中,第 1 行和第 3 行是:[13]),但我会有数百行或更多行,所以我不知道如何在括号中分隔不同的行(我知道中间的“逗号”不起作用)。

包括我文件1文件2(介绍一下我的文件)。例如,我需要将文件 1 中的第 19 行到第 40 行以及文件 2 中的第 9 行到第 18 行打印到文件 3 中(顺序相同)。您能建议其他方法吗?

我将非常感激。

史蒂芬

答案1

快速回答(其他人可以随意编辑以添加详细信息):

(sed -n 19,40p File1; sed -n 9,18p File2) > File3

-n告诉sed它不要自动打印所有输入行,然后X,Yp告诉它打印行 X 到 Y(含)。该(command1; command2)构造将两个命令“合并”为一个,以便进行输出重定向。

相关内容