次のファイルがあります。
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の間にカンマを使用してください。