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

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

次のような内容のファイル1があります:

ファイル1

6 つの列は、"-exec cp" コマンドを使用して表示される前に、6 つの異なるホストから取得されます。これは参考情報です。

ここで、file1 の 1 行目として追加したい 6 つのホスト名のリスト (file2) があります。

ファイル2の内容は以下の通りです。

HOST1 
HOST2 
HOST3 
HOST4 
HOST5 
HOST6 

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

最終出力

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

答え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現在のファイルの行番号です。この 2 つは、最初のファイルが読み込まれている間だけ等しくなります。は、printf "%s ",$0; next現在の行を\n末尾に を付けずに印刷し、次の行にスキップします。は、ヘッダーが印刷された後にFNR==1{print ""}を追加するだけであり、は「この行を印刷」の省略形です。\n1;awk

答え2

( echo $(cat file2) ; cat file1 ) | column -t > file3

関連情報