두 파일 사이의 vlookup으로 awk [닫기]

두 파일 사이의 vlookup으로 awk [닫기]

다음 2개의 파일 탭을 분리했습니다.

파일 1:

KEY1    TEXT1
KEY2    TEXT2
KEY3    TEXT3

파일 2:

KEY1    111
KEY2    222
KEY3    333

"aaa", "bbb"가 정적 텍스트인 다음 목표를 달성하고 싶습니다.

aaa TEXT1   bbb 111 ccc KEY1    ddd
aaa TEXT2   bbb 222 ccc KEY2    ddd
aaa TEXT3   bbb 333 ccc KEY3    ddd

다음 코드를 실행하고 있습니다.

 awk -F'\t' -f vlookup.awk file1 file2

vlookup.awk는 다음과 같습니다.

FNR==NR{
  a[$1]=$2
  next
}
{ if ($1 in a) { print "aaa", a[$1], "bbb", $2} else {print $1, "ERROR"}}

이것은 첫 번째 부분에서는 작동하지만 "ccc", $1, "ddd"추가하자마자 결과가 엉망이 됩니다. 예를 들면 다음과 같습니다.

aaa cccXT1  KEY111ddd1

감사합니다 dk

답변1

$ cat vlookup.awk 
BEGIN { OFS="\t" }
FNR==NR{
  a[$1]=$2
  next
}
#{ if ($1 in a) { print "aaa", a[$1], "bbb", $2} else {print $1, "ERROR"}}
{ if ($1 in a)  { print "aaa", a[$1], "bbb", $2, "ccc", $1, "ddd" } else {print $1, "ERROR"}}
$ awk -F'\t' -f vlookup.awk file1 file2
aaa     TEXT1   bbb     111     ccc     KEY1    ddd
aaa     TEXT2   bbb     222     ccc     KEY2    ddd
aaa     TEXT3   bbb     333     ccc     KEY3    ddd

관련 정보