Bash 스크립트 질문 - 두 목록을 비교하고 세 번째 목록 만들기

Bash 스크립트 질문 - 두 목록을 비교하고 세 번째 목록 만들기

Xen 호스트를 확인하기 위한 스크립트를 작성하기 시작했습니다. 문제는 실제로 두 가지입니다. 먼저 다음 코드 조각이 있습니다.

TMPFILE001=/tmp/FILE001.rx
TMPFILE002=/tmp/FILE002.rx
TMPFILE003=/tmp/FILE003.rx

xe vm-list params=uuid,is-control 도메인 | grep -B1 true | grep uuid | query awk {'print $5'} > $TMPFILE001
xe vm-list params=uuid --minimal tr ',' '\n' > $TMPFILE002

따라서 두 개의 목록이 제공되며 FILE002.rx에 나타나는 모든 항목을 제거하여 더 이상 FILE001.rx에 나타나지 않고 FILE003.rx로 출력하려고 합니다.

이상적으로는 그 안에 어떤 파일도 사용하지 않겠지만, 변수에 캡처하여 작동하게 하려고 합니다.

따라서 가능하다면 두 명령의 출력을 비교하고 명령 1에서 가져온 후 명령 2의 출력 중 나머지 부분만 표시하는 스크립트를 실행하는 것이 좋습니다.

명령 1의 출력;

고양이/tmp/FILE001.rx
468190e5-c78b-4337-8094-20638353b470
5926bbf3-c48c-4c2a-8113-d7e58520cfe7
3f98ee14-5e60-4e9b-852a-f924ffe80791

명령 2의 출력(잘림);

고양이/tmp/FILE002.rx |헤드-5
37ae6b9e-8a00-ab10-7e17-3d70ab275b9b
d8208537-0d69-1332-9301-4699d194430f
1cf06668-5450-4d44-a7ba-c2c7b6bcd6b2
7d11c6e3-48ef-0e5e-c6ed-e8f2548533fd
7d3d0ba3-a6d6-d2a7-99f0-06fa74e625fa

답변1

comm명령을 살펴보십시오 . 다음 두 파일을 받아주세요

f1.txt

item1
item2
item3
item4
item5
item6

f2.txt

item1
item2
item22
item3
item4

산출

$ comm -23 f1.txt f2.txt
item5
item6

Comm의 매뉴얼 페이지 항목

답변2

질문의 일부에 답하려면 -F 플래그와 함께 grep을 사용하여 두 파일 간의 차이점을 비교할 수 있습니다. 그런 다음 -v와 결합하여 필요한 차이점을 제거했습니다.

grep -vxFf $TMPFILE001 $TMPFILE002 > $TMPFILE003

답변3

또는 원하는 경우 다음을 수행할 수 있습니다.

diff file1 file2 | grep "<" | sed 's/^<\ //g' > file3

관련 정보