Awk

用awk合併兩個文件跳過1個文件的最後一行

  • August 25, 2020

我正在嘗試加入兩個文件,刪除重複的頭行並且只取最後一行

例如:

文件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

第二個命令是:

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

但結果是 file4.txt 中間有尾巴,而不是結尾

head1
data1
data2
tail8
data3
data4

任何想法?先感謝您

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

為什麼是awk?這會起作用:

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

引用自:https://unix.stackexchange.com/questions/606275