Pat*_*ard 0 command-line sed awk text-processing paste
我有一个看起来像这样的文件:
Heading1,Heading2
value1,value2
Run Code Online (Sandbox Code Playgroud)
另一个看起来像这样:
Row1
Row2
Run Code Online (Sandbox Code Playgroud)
我怎样才能将两者结合起来成为:
Row1,Heading1,Heading2
Row2,value1,value2
Run Code Online (Sandbox Code Playgroud)
有效地在第一列的位置附加一列?
工作paste:
paste -d, f2.txt f1.txt
Run Code Online (Sandbox Code Playgroud)
-d,将分隔符设置为,(而不是制表符)与awk:
awk 'BEGIN {FS=OFS=","} NR==FNR {a[NR]=$0; next} {print a[FNR], $0}' f2.txt f1.txt
Run Code Online (Sandbox Code Playgroud)
BEGIN {FS=OFS=","} 将输入和输出字段分隔符设置为 ,
NR==FNR {a[NR]=$0; next}: 对于第一个文件 ( f2.txt),我们将记录号保存为关联数组 ( a) 的键,值是相应的记录
{print a[FNR], $0}:对于第二个文件,我们只是打印了创纪录数量的-ED键的值的记录从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
Run Code Online (Sandbox Code Playgroud)