сортировка 2 файлов и применение к ним команды

#bash #shell

#bash #оболочка

Вопрос:

Я хочу найти неуникальные строки из 2 несортированных файлов (скажем, file1 и file2). Я должен выполнить для этого 3 команды.

сортировка file1> file1_sort
сортировка file2 > file2_sort
comm -3 file1_sort file2_sort

Могу ли я сделать это без создания временных файлов и одной командой?

Спасибо,

Ответ №1:

 comm -3 <(sort file1) <(sort file2)
  

Комментарии:

1. 1. Стоит отметить, что подстановка процессов не является стандартной (доступна не во всех оболочках типа Bourne ).

Ответ №2:

Ваше описание не соответствует имеющимся у вас командам. Вы говорите, что вам нужны неуникальные строки, но have comm -3 который удаляет неуникальные строки.

 sort file1 file2 | uniq -d
sort file1 file2 | uniq -u
  

В первой строке отображаются неуникальные строки (то есть те, которые находятся как в file1, так и в file2). Во второй строке отображаются уникальные строки (то есть те, которые отображаются только в file1 или file2, но не в обоих).

Ответ №3:

Если вас интересуют неуникальные строки, попробуйте это:

 cat file1 file2 | sort | uniq -c | sort -n
  

Ответ №4:

вам вообще не нужно сортировать.

 awk 'NR==FNR{a[$0]=1}NR>FNR{if($0 in a)print $0}' file1 file2 > result.file