awk를 사용하여 두 파일을 병합하고 한 파일의 마지막 줄을 건너뜁니다.

awk를 사용하여 두 파일을 병합하고 한 파일의 마지막 줄을 건너뜁니다.

두 파일을 연결하고 중복된 헤더 줄을 제거하고 마지막 줄만 가져오려고 합니다.

예를 들어:

파일 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

하지만 결과적으로 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

관련 정보