Поиск подстроки в столбце CSV-файла

Datamash GNU отлично подходит для подобных вещей:

$ datamash -sW groupby 1 max 2,3 < ifile.dat 
1   40  76
2   20  98
3   34  33
4   50  100
5   3   46

Чтобы обрабатывать большее количество столбцов, вы можете указать диапазон , например.

datamash -sW groupby 1 max 2-13 < ifile.dat 

2
25.09.2019, 12:47
2 ответа

Попробуйте это,

 grep -oc are file
  • -oПечатать только совпадающую часть.
  • -cвывести количество совпадающих строк.

Вы можете добавить опцию -i, если вам также нужен результат для Are. Который будет игнорировать чувствительность к регистру соответствующего шаблона

Если у нас есть несколько совпадающих шаблонов в одной строке...

grep -o are file | wc -l

Использование AWK:

awk -F ',' '$4 ~ /are/ {count++} END{print count}' file
awk -F ',' '$4 ~ /[Aa]re/ {count++} END{print count}' file
2
27.01.2020, 22:08

Вот два способа решения этой проблемы:

sed -Ee '
   y/,/\n/;s/\n/,/3;s//,/3;y/\n,/,\n/
   s/.*\n(.*)\n.*/\1/;s/\<[aA][rR][eE]\>/\n/g
   s/[^\n]*//g;/\n/!d;s///
' file.csv | wc -l

Здесь мы используем GNU sedи в режиме расширенного регулярного выражения. Идея состоит в том, чтобы сначала изолировать четвертое поле, а затем в нечувствительном к регистру -способе превращает все слова (s )"are", найденные в пространстве шаблонов, теперь в новую строку (s ). Затем удалите любую строку (s )без новой строки и уберите новую строку вместо sedразмещения ее собственной каждый раз, когда она что-то печатает на стандартный вывод. затем мы подсчитываем количество строк, выведенных sed, что дает нам сумму всех нечувствительных к регистру шаблонов слова «есть» в четвертых полях каждой строки.

perl -F, -lane '
   $k += split /(?<=\Ware)(?=\W)/i, $F[3];
   }{print $k-$.;
' file.csv

Perlмы разделяем четвертое поле($F[3])вокруг падежа -нечувствительного слова "are", определяемого окружением "are" с \Ws на обоих концах. затем мы обновляем количество разделенных полей. Обратите внимание, что количество полей всегда должно быть на 1 больше, чем количество слов «есть».

В конце, когда все строки прочитаны и обработаны, мы печатаем количество минус количество строк в файле.

0
27.01.2020, 22:08

Теги

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