将第一列附加到文件

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)

有效地在第一列的位置附加一列?

hee*_*ayl 5

工作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)