다른 두 개의 텍스트 파일을 기반으로 하는 큰 텍스트 파일에서 일부 ID를 제거합니다.

다른 두 개의 텍스트 파일을 기반으로 하는 큰 텍스트 파일에서 일부 ID를 제거합니다.

다음과 같은 큰 텍스트 파일(파일 A)이 있습니다.

ID1 ID2 0.2
ID3 ID6 0.4
ID4 ID2 0.6
ID5 ID8 0.8
ID7 ID14    0.4
ID3 ID9 0.6 
ID8 ID10 0.8

두 개의 다른 텍스트 파일(B와 C)이 있는데, 파일 B는 다음과 같습니다.

ID1
ID2
ID3
ID4
ID5
ID6
ID7

파일 C는 다음과 같습니다.

ID8
ID9
ID10
ID11
ID12
ID13
ID14

처음 두 열의 관련 내용이 파일 B와 파일 C에 모두 속하는 파일 A의 행만 유지하고 싶습니다. 예를 들어, 파일 A에서 다음 줄만 원합니다.

ID10 ID3    0.8
ID7 ID14    0.4
ID3 ID9 0.6

ID 10과 ID3은 파일 B와 C에 모두 속하기 때문입니다. 그러한 출력을 얻는 방법을 알려주시겠습니까?

매우 감사합니다

답변1

파일에 나타나는 문자열의 파일 grep과 파일에 나타나는 문자열의 결과입니다.ABgrepC

$ ( grep -wF -f fileB | grep -wF -f fileC ) <fileA
ID5 ID8 0.8
ID7 ID14    0.4
ID3 ID9 0.6

사용된 옵션 grep

  • -w전체 단어만 일치시킵니다(일반적이지만 비표준 옵션임). ID10grep에서 일치 항목이 없을 때 이 옵션을 사용합니다 ID1.
  • -F패턴을 정규식이 아닌 문자열로 해석합니다.
  • -f별도의 파일에서 일치시킬 패턴을 읽습니다.

관련 정보