한 파일에서 다른 파일의 값 찾기

한 파일에서 다른 파일의 값 찾기

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

두 번째 방법을 사용하면 발견된 각 패턴에 대해 별도의 메시지를 인쇄할 수 있지만 큰 파일에서는 속도가 훨씬 느려집니다.

관련 정보