
答え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 ""}
を追加するだけであり、は「この行を印刷」の省略形です。\n
1;
awk
答え2
( echo $(cat file2) ; cat file1 ) | column -t > file3