我尝试从 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)
构造将两个命令“合并”为一个,以便进行输出重定向。