awkを使用して2つのファイルをマージし、1つのファイルの最後の行をスキップします。

awkを使用して2つのファイルをマージし、1つのファイルの最後の行をスキップします。

両方のファイルをリンクし、重複したヘッダー行を削除し、最後の行のみをインポートしようとしています。

たとえば、

ファイル1.txt

head1
data1
data2
tail8

ファイル2.txt

head1
data3
data4
tail9

file3.txtで望む結果:

head1
data1
data2
data3
data4
tail8 or rail9 doesn't matter

まず、重複ヘッダーを削除してみました。

awk '!seen[$0]++' file1.txt file2.txt > file3.txt

2番目のコマンドは次のとおりです。

awk 'NR > 1 { print prev } { prev = $0 }' file3.txt > file4.txt

しかし、結果として、tailはfile4.txtの終わりではなく真ん中にあります。

head1
data1
data2
tail8
data3
data4

どんなアイデアがありますか?事前にありがとう

答え1

なぜ名前はawkですか?これは働きます:

{ sed -e '$d' file1.txt; sed -e '1d' file2.txt; } > file3.txt

答え2

$ awk 'NR==FNR{ if (NR>1) print prev; prev=$0; next } FNR>1' file1 file2
head1
data1
data2
data3
data4
tail9

関連情報