2개의 파일이 있는데 그 중 하나에 값이 있고 다른 파일에서 해당 값을 찾아야 합니다. 모든 단일 값을 greping하는 대신 첫 번째 파일을 사용하여 두 번째 파일에서 찾습니다.
즉
파일 1
ns1.cloudns.net. -17554 IN A 85.159.233.17
ns1.cloudns.net. -17554 IN AAAA 2a00:1768:1001:9::1
www.alweya.com. -335336 IN A 192.69.217.246
파일 2
alweya.com
출력 - 파일 1에 다음이 포함됨www.alweya.com
답변1
while read line
do
msg="File 1 contains "
msg2="$msg$(grep "$line" file1.txt | cut -d ' ' -f 1)"
if [ ${#msg2} -ne ${#msg} ]; then
echo $msg2
fi
done < file2.txt
파일 1
ns1.cloudns.net. -17554 IN A 85.159.233.17
ns1.cloudns.net. -17554 IN AAAA 2a00:1768:1001:9::1
www.alweya.com. -335336 IN A 192.69.217.246
파일 2
alweya.com
답변2
정확히 무엇을 하고 싶은지에 따라 다릅니다. 가장 쉬운 방법은 을 사용하고 grep
스키마 파일을 전달하는 것입니다 -f
.
$ grep -f file2 file1
www.alweya.com. -335336 IN A 192.69.217.246
출력을 더 자세히 제어해야 하는 경우 셸 루프를 사용할 수 있습니다.
$ while read pat; do
grep -q "$pat" file1 && echo "file1 contains $pat";
done < file2
file1 contains alweya.com
두 번째 방법을 사용하면 발견된 각 패턴에 대해 별도의 메시지를 인쇄할 수 있지만 큰 파일에서는 속도가 훨씬 느려집니다.