
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