
어떤 응용 프로그램이 설치되었지만 제거되지 않았는지 확인하기 위해 comm 명령을 사용하여 두 로그를 비교하려고 합니다. 가능하다면 awk를 사용하고 싶지 않습니다. 다음은 예제 파일입니다:
설치하다:
2009-03-21 11:43:21 install flex-old:amd54 <none> 3.7.4a-10ubuntu1
2009-03-22 22:55:08 install libubsan0:amd54 <none> 6.3.0-1ubuntu1~14.04
삭제:
2009-03-24 19:53:49 remove libubsan0:amd54 <none> 6.3.0-1ubuntu1~14.04
따라서 차별화를 위해 주목해야 할 것은 바로 '플렉스-올드' 시리즈다. 몇 가지 다른 변형을 포함하여 제가 시도한 내용은 다음과 같습니다.
comm -23 <(sort install.txt) <(sort removed.txt) > difference.txt
이렇게 하면 제거된 목록에서 흔하지 않은 목록뿐만 아니라 설치된 모든 목록이 출력됩니다. 나는 또한 다음을 시도했습니다.
comm -3 <(cut -d " " -4f sort install.txt | uniq) <(sort removed.txt | uniq) > what.txt
그러나 이렇게 하면 두 앱 모두에 대한 모든 앱이 출력되지만 설치 시 직접 제거됩니다.
답변1
당신은 나와 매우 가까운 것 같습니다. 샘플에 따르면 다음 1개의 안감이 있습니다.
comm -23 <(sort install.txt | cut -d" " -f4) <(sort removed.txt | cut -d" " -f4)
나를 위해 다음 출력을 생성했습니다.
flex-old:amd54
참고: 조정이 필요할 수 있습니다 comm -23
. 예를 들어 comm -3
다음과 같은 내용이 필요할 수 있습니다.
테스트하기 위해 무엇을 했습니까? 먼저, 테스트하기 위해 명령을 분석했습니다. 나는 다음과 같이 시작했습니다:
cut -d " " -4f sort install.txt
이것은 분명히 깨진 것이므로 다음과 같이 수정했습니다.
sort install.txt | cut -d" " -f4
그 후 (내 경험상) 추가 테스트 없이 코드 한 줄을 다시 작성할 수 있었습니다. 실패하면 기본적인 테스트를 해서 comm
무엇이 문제인지 알아보겠지만 이번에는 그럴 필요가 없습니다:]