grep은 패턴 목록에서 중복 값을 찾습니다.

grep은 패턴 목록에서 중복 값을 찾습니다.

고유 ID(열 1)와 해당 값(열 2)의 목록인 A.txt 파일이 있습니다.

A.txt

ABC1D_T1_B1  123.4
ABC2D_T1_B2  146.7
ABC3D_T1_B1  567.8
ABC4D_T0_B2  96.8
ABC1D_T0_B1  145.9

두 번째 파일은 B.txt이며 고유하지는 않지만 중복된 항목이 있습니다.

ABC1D_T1_B1
ABC1D_T1_B1
ABC2D_T1_B2
ABC3D_T1_B1
ABC3D_T1_B1
ABC4D_T0_B2
ABC1D_T0_B1
ABC1D_T0_B1

A.txt에서 B.txt를 grep하고 중복 목록의 열 2 값을 보고하는 방법

결과:

ABC1D_T1_B1  123.4
ABC1D_T1_B1  123.4
ABC2D_T1_B2  146.7
ABC3D_T1_B1  567.8
ABC3D_T1_B1  567.8
ABC4D_T0_B2  96.8
ABC1D_T0_B1  145.9
ABC1D_T0_B1  145.9
ABC1D_T0_B1  145.9

일반적으로 B.txt에 고유한 항목이 있으면

grep -Fw -f B.txt A.txt >Result.txt

grep을 사용하여 여러 개의 중복 항목을 처리하려면 어떻게 해야 합니까?

답변1

간단한 방법을 사용하여 이 작업을 수행할 수 있습니다 join.

join A.txt B.txt

그러나 작동하려면 두 파일 모두 조인 키(여기서는 첫 번째(공백으로 구분된) 필드)를 기준으로 정렬되어야 합니다. 이렇게 하려면 sort -b filename.

답변2

다음 항목도 태그했기 때문입니다 awk.

awk 'FNR == NR {a[$1] = $0; next}; {print a[$1]}' A.txt B.txt

나는 단 한 사람이 이것을 할 수 없다고 생각하지만 다음 grep의 조합이 가능합니다.xargsgrep

xargs -I{} grep -Fw -- {} A.txt < B.txt

관련 정보