あるファイルの行を別のファイルに行として追加します。

あるファイルの行を別のファイルに行として追加します。

次の内容を含むfile1があります。

ファイル1

この6つの列は6つの異なるホストから取得され、次に「-exec cp」コマンドを使用してレンダリングされます。これは参考用です。

file1の最初の行に追加したい6つのホスト名(file2)のリストがあります。

file2の内容は次のとおりです。

HOST1 
HOST2 
HOST3 
HOST4 
HOST5 
HOST6 

このような最終出力が必要です。

最終出力

列は追加できますが、行は追加できません。

ベストアンサー1

1つの方法は次のとおりです。

awk -vhead="$(tr '\n' ' ' <file2)" 'BEGIN{print head}{print}' file1 > newfile

このtrコマンドは、改行を空白に置き換えて「列」をfile2「行」に変換します。これはawk変数として渡され、head他のものよりも先に印刷されます。その後、入力ファイルの各行を印刷します。

または、次の場所で作業全体を完了することもできますawk

awk 'NR==FNR{printf "%s ",$0; next}FNR==1{print ""}1;' file2 file1 > newfile

NR現在の入力行番号とFNR現在のファイルの行番号。両方のファイルは、最初のファイルを読み取る場合にのみ同じです。末尾aなしでprintf "%s ",$0; next現在の行を印刷し、次の行にジャンプします。\n印刷タイトルの後に1つを追加すると、FNR==1{print ""}「この行の印刷」の略語です。\n1;awk

おすすめ記事