Подсчитать количество вхождений значения из столбца CSV в другие файлы и добавить как новый столбец

Подсчитать количество вхождений значения из столбца CSV в другие файлы и добавить как новый столбец

Могу ли я заставить это работать с помощью базовых инструментов оболочки (без Python или Perl)?

ВХОД1:

file1.csv
    John,Doe,[email protected]
    Andy,Barry,[email protected]
    Mary,,[email protected]

подсчитать количество вхождений писем из 3-го столбца, file1 в INPUT2:

file2.log
    [email protected]&fghfgh
    asdda&[email protected]
    [email protected]&werewr

желаемый ВЫХОД:

result.csv
    John,Doe,[email protected],0
    Andy,Barry,[email protected],2
    Mary,,[email protected],1

большое спасибо!

решение1

Вы не предоставили действительных данных, поэтому я использовал это:

John,Doe,[email protected]
Andy,Barry,[email protected]
Mary,,[email protected]

Для которого следующий однострочный код awk даёт ожидаемые результаты:

awk -F, '{l[NR]=$0;f[NR]=$3;c[$3]++}END{for(i=1;i<=NR;i++)print l[i] "," c[f[i]]}'

Проблема здесь в том, что ваша задача требует либо двух проходов (f[] — это просто удобство, позволяющее избежать анализа всего содержимого, либо повторного анализа в конце). Но поскольку я не понимаю, почему вы исключили python или perl (ониявляютсябазовые инструменты оболочки), возможно, вы также не считаете awk честной игрой...

Связанный контент