Сравните два файла и получите совпадение

У меня есть файлы, похожие на этот:

Файл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
06.07.2017, 15:38
2 ответа
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

Если вы хотите выполнить простой тест на наличие -не совпадающих записей в файле 2

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

и наоборот -не совпадающие записи в файле 1

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является неявным ).

1
28.01.2020, 05:10
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
0
28.01.2020, 05:10

Теги

Похожие вопросы