Bash Grep|awk 및 다른 파일의 결과 인쇄

Bash Grep|awk 및 다른 파일의 결과 인쇄

IP 주소가 포함된 파일이 2개 있습니다.

첫 번째 파일:

192.168.1.1:4.4.4.4
192.168.1.2:4.4.2.2
192.168.1.1:8.8.8.8
4.4.8.8:192.168.1.6
192.168.1.4:4.4.8.8

두 번째 파일:

4.4.2.2
4.4.8.8

이제 두 번째 파일에서 각 값을 가져와 해당 값이 첫 번째 파일에 있는지 확인하는 스크립트가 필요합니다. 값이 있으면 파일 1의 전체 줄을 인쇄해야 합니다.

예를 들어 위의 예에서 원하는 결과는 다음과 같습니다.

192.168.1.2:4.4.2.2
4.4.8.8:192.168.1.6
192.168.1.4:4.4.8.8

답변1

grep -F -f file2.txt file1.txt

그러면 의 행을 읽고 에서 file2.txt검색할 패턴으로 사용합니다 file1.txt.


두 번째 열의 일치 항목만 확인하려면 다음 awk 명령을 사용할 수 있습니다.

awk -F: 'NR==FNR{a[$0];next}$2 in a' file2.txt file1.txt

그러면 각 문자열을 읽고 이를 사용 file2.txt하여 배열( )을 만듭니다 . a그런 다음 file1.txt열 2의 값이 배열에 존재하는지 확인합니다 a. 그렇다면 전체 줄이 인쇄됩니다.

답변2

두 번째 파일을 반복하고 첫 번째 파일에서 grep을 수행할 수 있습니다.

for pattern in `cat file2.txt` ; do grep $pattern file1.txt ; done

콜론 뒤의 끝 부분만 일치시키려는 경우.

for pattern in `cat file2.txt` ; do grep :$pattern$ file1.txt ; done

관련 정보