아래에서 입력 파일(file1 및 file2)을 찾아 file3에 출력을 가져옵니다.
awk에서 -GSUB를 사용하세요
파일 1:
000000018*A00045425530
000000022*A00002122779
000000032*A00051046521
000000035*A00008977353
000000052*A00050659539
파일 2:
A00045425530 *204***204***0.01**********1**1*****18**0****1***********0.01***0**0***0 (EOR)
A00020515159 *6071***6071*************1**1*****26**0****1***0*0**0***0*****0**0***0 (EOR)
A00002122779 *****************1*************1****************0***0 (EOR)
A00002293889 ********************************************0**0***0 (EOR)
A00008977353 *****************1*************1****************0***0 (EOR)
AGN(파일 1의 필드 2 및 파일 2의 필드 1)을 일치시키고 awk에서 gsub를 사용하여 일치하는 출력에서 "(EOR)"를 null로 제거합니다. 출력은 다음과 같아야 합니다.
파일 3 출력:
A00045425530 *204***204***0.01**********1**1*****18**0****1***********0.01***0**0***0
A00002122779 *****************1*************1****************0***0
A00008977353 *****************1*************1****************0***0
답변1
awk 'NR==FNR{ a[$2] }
NR!=FNR && $1 in a{
gsub(/\s+\(EOR\)/, "")
print
}
' FS='*' file1 FS=' ' file2 > file3
첫 번째 파일을 읽을 때 이를 *
입력 필드 구분 기호로 사용하고 두 번째 필드를 배열에 대한 인덱스 a
(널 값 포함)로 사용합니다.
두 번째 파일을 읽을 때 공백 문자를 입력 필드 구분 기호로 사용하고 첫 번째 필드가 배열의 인덱스로 존재하는지 테스트합니다 a
. 조건이 true이면 (EOR)
다음 공백 문자를 모두 빈 문자열로 바꾸고 현재 줄을 인쇄합니다. 출력이 로 리디렉션됩니다 file3
.