我希望您能为这个问题提供帮助,我有两个文件,每个文件在第三个文件中都有一些行。但是我需要从文件1中提取整行(在5列或6列中的值),从文件2中提取其他部分,并将它们保存在文件3中(保留行号)。示例:
文件1
1. mike
2. linda
3. matt
4. eric
5. emma
文件2
1. beth
2. shelly
3. michael
4. andy
5. theo
文件3(输出)
1. mike
2. shelly
3. matt
4. andy
5. emma
因此,我需要从文件#2中提取第2行和第4行的值,并将它们打印在第三个文件中,同时保留文件#1中第1、3和5行的内容。
我使用sed尝试了此操作(简单的示例):
sed -n -e 1,3p -e 5p file1.txt > file3.txt
这将从我的文件#1中提取第1、3和5行并将其打印在文件#3中,但是我不知道如何从文件#2(2和4)中获取这些行并将其添加到文件中#3。
答案 0 :(得分:0)
使用grep注释文件名:
grep -H '.*' in1 in2 | sed '/in1:[24]/d;/in2:[135]/d;s/[^:]*://' | sort
输出:
1. mike
2. shelly
3. matt
4. andy
5. emma
答案 1 :(得分:0)
sed
可能不是一个非常合适的工具。怎么样
paste in1 in2 | awk -F '\t' '{ print $(1+(1+NR)%2) }'
Awk变量NR
是当前输入行号,模运算符NR%2
是介于1和0之间的触发器。我们需要执行两次加法运算才能使其在1和2。然后很容易从paste
输出中打印交替的列。