сравнить 2 файла в unix по ключевому столбцу

ищем ключевой столбец "имя"

файл 1 есть

id|name|age|sal

1|AAA|30|2000

2|BBB|40|3000

4|CVC|32|2000

5|DDD|25|2000

файл 2

name

FFF

GGG

AAA

DDD

RRR

вывод будет как

файл 3 (обработка)

id|name|age|sal

1|AAA|30|2000

5|DDD|25|2000

файл 4 (не обрабатывается)

id|name|age|sal

2|BBB|40|3000

4|CVC|32|2000

Пожалуйста, дайте мне вывод, используя Unix

Спасибо за помощь.


person vsraju    schedule 12.09.2014    source источник
comment
возможный дубликат Найти сходство между двумя файлами   -  person fedorqui 'SO stop harming'    schedule 12.09.2014


Ответы (1)


Вы можете использовать фильтр awk для этого

    $ awk 'FNR==NR{a[$1];next}($1 in a){++a[$1]}
        END{for(i in a){print i" "a[i]}}' file1.txt 1.txt 2.txt
    put 1
    get 1
    move 2

Где:

  • FNR==NR{a[$1];next}: при обработке file1.txt мы отмечаем
    вхождение $1 в ассоциативный массив a.
  • ($1 in a){++a[$1]}: при обработке 1.txt и 2.txt проверяем наличие $1 в ассоциативном массиве a, если да, то увеличиваем счетчик на 1.
  • Наконец, пройдитесь по ассоциативному массиву a, выведите ключ (первое поле в файлах) и его значение (количество вхождений в 1.txt и 2.txt).

См.: https://unix.stackexchange.com/questions/125762/compare-first-column-in-other-files

person OshoParth    schedule 12.09.2014
comment
Не копируйте и вставляйте ответы с других сайтов, даже не упомянув: unix.stackexchange.com/a/125768 ПРИМЕЧАНИЕ. ссылка добавлена ​​после моего комментария. Вам следует прочитать stackoverflow.com/help/referencing. - person fedorqui 'SO stop harming'; 12.09.2014