다른 파일의 일치하는 다른 ID를 기반으로 파일의 두 번째 열에 있는 값을 바꿉니다.

다른 파일의 일치하는 다른 ID를 기반으로 파일의 두 번째 열에 있는 값을 바꿉니다.

다음과 같은 두 개의 파일이 있습니다. file2는 탭으로 구분됩니다.

파일 1

A 
B
E

파일 2

ID value
A   1
B   2
C   3
D   4
E   5
F   6
GA  7
HB  10
I   11

file1에 ID가 있으면 아래와 같이 두 번째 열의 값을 0으로 바꾸고 싶습니다.

ID  value
A   0
B   0
C   3
D   4
E   0
F   6
GA  7
HB  10
I   11

정말 멍청한 코드를 썼어

for i in `cat file1`;do sed -i 's/\<'"$i"'\>/'"$i"'\t0/g' file2;done

less -S file2 | awk '{print $1,"\t",$2}' | sed 's/ //g' > finalfile

유창한 코드는 awk처럼 대체될 수 있나요? 감사합니다.

답변1

모든 일을 함께 하세요 awk.

awk -v OFS='\t' '
  NR==FNR{ Ids[$1]; next }
         { print $1, ($1 in Ids?0:$2) }
' file1 file2

관련 정보