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

Загрузите bin1of5, если он похож на более поздние выпуски, можно установить минимальную систему от этого. Необходимо отменить выбор всех групп пакета (включая "Основу") во время начального этапа установки. После начальной загрузки новой системы можно установить любые необходимые группы пакета от интернет-использования репозиториев yum groupinstall package-group-name.

1
13.09.2015, 02:17
6 ответов

fgrep -f file1.txt file2.txt

Здесь мы получаем шаблон поиска из file1.txt и ищем его в file2.txt. Поскольку текст исправлен, мы используем fgrep для более быстрой операции поиска.

enter image description here

3
27.01.2020, 23:11
  • 1
    как file1 имеет 50 строк, и file2 имеет 500 строк.. это не работает –  jack 07.09.2012, 23:36
  • 2
    Это должно работать согласно Вашему описанию т.е. получить список из file2.txt, который идентичен file1.txt –  Sachin Divekar 07.09.2012, 23:40
  • 3
    strange.it does не дает любой вывод для меня.. –  jack 07.09.2012, 23:49
  • 4
    Не знайте, почему это не работает на Вас. Я просто загрузил снимок экрана своего терминала, где Вы видите необходимый вывод. Это дает какую-либо ошибку при выполнении команды? –  Sachin Divekar 07.09.2012, 23:58
  • 5
    это производит пустой файл –  jack 08.09.2012, 00:01

Когда Вы используете, присоединяются, записи на каждой строке похожи на "ячейки" в дб, но они должны быть отсортированы, таким образом, можно попробовать,

sort file1.txt > file1_t.txt
sort file2.txt > file2_t.txt

И затем сделайте соединение

$ join file1_t.txt file2_t.txt

который даст Вам внешнее соединение, т.е. список всех случаев ячеек в обоих файлах. Для сокращения этого списка только до записей в обоих файлах передайте вывод по каналу вышеупомянутой команды в uniq

$ join file1_t.txt file2_t.txt | uniq
4
27.01.2020, 23:11

Вы должны sort перед Вами join.

$ cat a.in
TERYUFV00000010753
TERYUFV00000009526
$ cat b.in
TERYUFV00000009526 refids_739_known_8/10_target
TERYUFV00000018907 refids_12023_known_21/22_target
TERYUFV00000010753 refids_11775_known_1/1_target
$ join a.in b.in
$ join <(sort a.in) <(sort b.in)
TERYUFV00000009526 refids_739_known_8/10_target
TERYUFV00000010753 refids_11775_known_1/1_target
3
27.01.2020, 23:11

Предположение, что файлы отсортированы:

comm -12 file1 file2
1
27.01.2020, 23:11
  • 1
    Вы тестировали свой метод прежде, чем отправить его здесь? Это не работает на этот вопрос. коммуникация сравнивает два отсортированных файла всей строкой. Так, строка "TERYUFV00000010753" в file1 отличается от строки "TERYUFV00000010753 refids_11775_known_1/1_target" в file2. –  Dejian 12.09.2012, 13:22

Следующая строка работает?

grep -iw -f file1.txt file2.txt

Если бы файлы были загружены на сервер от клиента Windows, то возможно, необходимо выполнить dos2unix сначала.

dos2unix file1.txt file2.txt

Если вышеупомянутые команды не работают, можно попробовать следующие строки, чтобы видеть, существуют ли дополнительные непечатаемые символы вначале или конец строк в file1.txt. Дополнительные непечатаемые символы в объектах file1.txt могут привести к отказу grep из file2.txt.

cat -v file1.txt
sed -n -l file1.txt
1
27.01.2020, 23:11

Вы также можете решить эту задачу с помощью AWK:

NR == FNR {
    line[$1];
    next;
}
$1 in line {
    print $0;
}

В качестве подстрочника:

awk 'NR == FNR {line[$1]; next;} $1 in line' file1.txt file2.txt

Обязательно сохраните в памяти меньший файл, то есть поместите его в качестве первого аргумента подстрочника.

1
27.01.2020, 23:11

Теги

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