한 파일에서 키-값 쌍을 가져와 다른 파일에서 키 목록 가져오기

한 파일에서 키-값 쌍을 가져와 다른 파일에서 키 목록 가져오기

내 문제의 단순화된 버전은 file2키가 file1.

예를 들어:

file1(열쇠 포함)

a
d
f

file2(키 값 파리 포함)

a=1
b=2
c=3
d=4
f=5
g=6

예상 출력:

a=1
d=4
f=5

내가 시도한 것:

cat file1 | xargs -I % grep "^%=" file2

이 접근 방식은 잘 작동하지만 파일이 큰 경우 성능이 저하됩니다. (예를 들어 file1에는 12k 라인이 있고 file2에는 20k 라인이 있습니다)

가장 좋은 접근 방식은 무엇입니까?

답변1

awk를 시도해 볼 수 있습니다.

$ awk 'NR==FNR{keys[$1]; next} $1 in keys' file1 FS='=' file2
a=1
d=4
f=5

답변2

GNU를 사용 join하고 다음을 수행하십시오 bash.sort

join -t '=' <(sort file1) <(sort file2)

산출:

a=1
d=4
f=5

답변3

grep -f이것이 하는 일 입니다 :

$ grep -f file1 file2
a=1
d=4
f=5

file1file2그러나 이는 바로 앞이 아닌 줄의 어느 곳에서나 키를 검색합니다 =. 실제 데이터에서는 작동하지 않을 수 있습니다.

관련 정보