
Могу ли я заставить это работать с помощью базовых инструментов оболочки (без 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 честной игрой...