ファイルに最初の列を追加する

ファイルに最初の列を追加する

次のファイルがあります。

Heading1,Heading2
value1,value2

もう一つは次のとおりです。

Row1
Row2

2つをどのように組み合わせることができますか?

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: 2 番目のファイルの場合、プレフィックスが付いたレコード番号キー値でレコードを印刷します。


例:

% 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これはthenを使用してx保存された行です。ファイル1の間にカンマを使用してください。

関連情報