파일에서 일치하는 줄을 검색하려고 하는데 "색인" 또는 검색할 일치 항목 목록이 있는 파일에도 중복 항목이 있어서 중복 항목도 인쇄하고 싶습니다.
예:
파일 1(인덱스 파일 또는 일치시킬 문자열 목록)
abc
tgf
abc
ggg
aaa
fff
파일 2(파일 1의 각 항목 내용을 검색하고 싶습니다.)
Fred 1 3 abc
Amy 2 4 ggg
Dan 5 6 tgf
Mike 9 1 fff
Steve 2 1 aaa
내가 원하는 결과는 다음과 같습니다(순서는 중요하지 않으며 모든 행과 일치하면 됩니다).
Fred 1 3 abc
Dan 5 6 tgf
Fred 1 3 abc
Amy 2 4 ggg
Steve 2 1 aaa
Mike 9 1 fff
아래와 같이 grep에 익숙하고 시도했지만 중복된 항목이 인쇄되지 않습니다.
grep -Fwf file1.txt file2.txt
Fred 1 3 abc
Amy 2 4 ggg
Dan 5 6 tgf
Mike 9 1 fff
Steve 2 1 aaa
답변1
통과하다awk
awk 'NR==FNR{A[$4]=$0;next}{print A[$1]}' file2.txt file1.txt
또는 sort
다음을 통해 출력을 편집하십시오 join
.
join -o 2.1 2.2 2.3 2.4 -2 4 <(sort file1.txt) <(sort -k4 file2.txt)