두 파일을 비교하고 일치하는 항목을 출력합니다.

두 파일을 비교하고 일치하는 항목을 출력합니다.

다음과 같은 파일이 있습니다.

파일 1:

1.1.1.7 mounting of udf filesystems is disabled Fail
1.1.1.8 mounting of FAT filesystems is disabled  Fail
1.1.5 noexec option set on /tmp partition   Fail
1.1.17 noexec option set on /dev/shm partition  Fail
1.1.21 sticky bit is set on all world-writable directories  Fail
1.3.1 AIDE is installed Fail

파일 2:

1.1.1.7 Ensure mounting of udf filesystems is disabled
1.1.1.8 Ensure mounting of FAT filesystems is disabled
1.1.3 Ensure nodev option set on /tmp partition
1.1.4 Ensure nosuid option set on /tmp partition

첫 번째 열의 두 파일을 비교하고 일치하는 위치를 출력하고 싶습니다. 위의 경우 출력은 다음과 같습니다.

1.1.1.7 Ensure mounting of udf filesystems is disabled
1.1.1.7 mounting of udf filesystems is disabled Fail
1.1.1.8 Ensure mounting of FAT filesystems is disabled
1.1.1.8 mounting of FAT filesystems is disabled  Fail

어떻게 해야 합니까?

또한 일치하지 않는 항목을 표시할 수 있도록 어떻게 반전합니까? File1과 File2를 비교하거나 그 반대로 비교하시겠습니까?

답변1

awk '
  NR == FNR {a[$1] = $0; next} 
  ($1 in a) {print; print a[$1]}
' File1 File2
1.1.1.7 Ensure mounting of udf filesystems is disabled
1.1.1.7 mounting of udf filesystems is disabled Fail
1.1.1.8 Ensure mounting of FAT filesystems is disabled
1.1.1.8 mounting of FAT filesystems is disabled  Fail

File2에서 일치하지 않는 항목에 대해 간단한 테스트를 수행하려는 경우

awk 'NR==FNR {a[$1]=$0; next} !($1 in a)' File1 File2
1.1.3 Ensure nodev option set on /tmp partition
1.1.4 Ensure nosuid option set on /tmp partition

이와 대조적으로 File1의 일치하지 않는 항목은

awk 'NR==FNR {a[$1]=$0; next} !($1 in a)' File2 File1
1.1.5 noexec option set on /tmp partition   Fail
1.1.17 noexec option set on /dev/shm partition  Fail
1.1.21 sticky bit is set on all world-writable directories  Fail
1.3.1 AIDE is installed Fail

(이것은 print암시적입니다).

답변2

perl -lane '
        @ARGV and $h{$F[0]}=$_,next;
        print "$_\n$h{$F[0]}" if exists $h{$F[0]};
' File2 File1

1.1.1.7 mounting of udf filesystems is disabled Fail
1.1.1.7 Ensure mounting of udf filesystems is disabled
1.1.1.8 mounting of FAT filesystems is disabled  Fail
1.1.1.8 Ensure mounting of FAT filesystems is disabled

관련 정보