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
답변2
질문의 일부에 답하려면 -F 플래그와 함께 grep을 사용하여 두 파일 간의 차이점을 비교할 수 있습니다. 그런 다음 -v와 결합하여 필요한 차이점을 제거했습니다.
grep -vxFf $TMPFILE001 $TMPFILE002 > $TMPFILE003
답변3
또는 원하는 경우 다음을 수행할 수 있습니다.
diff file1 file2 | grep "<" | sed 's/^<\ //g' > file3