我有一个如下所示的文件:
Heading1,Heading2
value1,value2
另一种看起来像这样:
Row1
Row2
我怎样才能将两者结合起来成为:
Row1,Heading1,Heading2
Row2,value1,value2
有效地在第一列的位置附加一列?
答案1
职位paste
:
paste -d, f2.txt f1.txt
-d,
将分隔符设置为,
(而不是制表符)
和awk
:
awk 'BEGIN {FS=OFS=","} NR==FNR {a[NR]=$0; next} {print a[FNR], $0}' f2.txt f1.txt
BEGIN {FS=OFS=","}
将输入和输出字段分隔符设置为,
NR==FNR {a[NR]=$0; next}
:对于第一个文件 (f2.txt
),我们将记录号保存为关联数组 (a
) 的键,其值是相应的记录{print a[FNR], $0}
a
:对于第二个文件,我们只是用前置的记录编号键的值打印记录
例子:
% cat f1.txt
Heading1,Heading2
value1,value2
% cat f2.txt
Row1
Row2
% paste -d, f2.txt f1.txt
Row1,Heading1,Heading2
Row2,value1,value2
% awk 'BEGIN {FS=OFS=","} NR==FNR {a[NR]=$0; next} {print a[FNR], $0}' f2.txt f1.txt
Row1,Heading1,Heading2
Row2,value1,value2
答案2
另一个简短的awk
方法。
awk '{getline x<"file1"; print $0","x}' file2
getline x<"file1"
读取整行文件1并坚持到X多变的。print $0","x
打印整行文件2通过使用$0
thenx
这是保存的行文件1之间用逗号。