Как печатать обе соответствующие строки из двух разных файлов? [Дубликат]

Этот вопрос уже имеет ответ здесь: Определите дубликаты строк в файле, не удаляя их? 6 ответов

Я имею file1 и file2 следующим образом. Я хотел бы сначала найти совпадения между двумя файлами на основе первого столбца, а затем распечатать соответствующие строки из file1 и file2. Я написал желаемый результат ниже

$ cat file1
1,      456,    abcd,  ...
23,     567,    rstc,  ...
45,     678,    rsto,  ...
$ cat file2
23,     5607,   abcstc, ...
45,     28,     zfgsto, ...

Желаемый вывод:

23,     567,    rstc,    ...
23,     5607,   abcstc,  ...
45,     678,    rsto,    ...
45,     28,     zfgsto,  ...
1
задан 29 January 2015 в 20:03

1 ответ

Возможно, используя uniq, чтобы сначала создать набор нужных строк:

for pref in $(tail -q -n +2 *.txt | cut -d',' -f 1 | sort | uniq); do grep ^${pref}"," *.txt | cut -d':' -f 2 >> test.res; done

Пошаговое руководство:

Создание набора префиксов с помощью uniq (пропускает первую строку каждый файл с помощью tail):

for pref in $(tail -q -n +2 *.txt | cut -d',' -f 1 | sort | uniq)

Для каждого найденного префикса grep оба файла для строк, начинающихся с него, и удалите отчет grep «файл сопоставлен» с помощью cut: [ ! d4]

do grep ^${pref}"," *.txt | cut -d':' -f 2 >> test.res; done
0
ответ дан 23 May 2018 в 23:44

Другие вопросы по тегам:

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