다른 데이터 파일과 비교하여 데이터 파일에서 특정 행을 추출하는 방법은 무엇입니까? (병합)[중복]

다른 데이터 파일과 비교하여 데이터 파일에서 특정 행을 추출하는 방법은 무엇입니까? (병합)[중복]

두 개의 다른 파일이 있습니다.

first file:
id1 19501112
id2 19831207
1d4 20001212
id6 20000101
id10 20061213
id11 20081212
id12 20100109
id13 20101218
id14 20101212
id15 20111111
id16 20150919
id20 20141415

두 번째 파일은 다음과 같습니다.

id100
id2
id4
id44
id10
id16
id2000
id34
id5
id7

그래서 두 번째 파일과 동일한 ID를 가진 파일 1에서 해당 줄을 추출하고 싶습니다. 그래서 출력 파일이 다음과 같기를 원합니다.

id2 19831207
1d4 20001212
id10 20061213
id16 20150919

어떤 제안이 있으십니까?

답변1

GNU grep을 사용하십시오:

grep -w -f file2.txt file1.txt 

이는 grep전체 "단어"만 일치시키고 file2.txt에서 검색할 패턴 목록을 얻도록 지시합니다.

file2.txt의 내용이 file1.txt의 나머지 줄에 나타날 가능성이 있는 경우 다음과 같이 sed 및 bash를 사용하여 프로세스 대체를 사용할 수 있습니다.

grep -f <(sed -e 's/^/^/ ; s/$/\\b/' file2.txt) file1.txt

이는 sed를 사용하여 NET 에서 사용되기 전에 idN각 줄을 변환합니다 .^idN\bgrep -f

관련 정보