LINUX.ORG.RU

Разделение записей в awk

 


0

1

Хочу посчитать кол-во вхождения слова в файле. Сейчас, программа считает строки где есть искомое слово и переходит к следующей строке, т.е. если в строке одно или более слово, он считает его за одно. Поставил разделитель записей RS=" " - не помогло. В чем проблема?

BEGIN { i=0; RS=" "; } /cat/ { i++; } END { print «count: » i; }

Ответ на: комментарий от hexdump01010101

Не совсем, оказывается переход на новую строку теперь он не считает разделителем. Теперь новый вопрос: как сделать чтоб и то, и то считалось разделителем?

MarvinParanoid
() автор топика

В AWK есть Record Separator и Field Separator.

Чтобы и то, и другое сделать одним и тем же разделителем, ЕМНИП, необходимо регулярное выражение, а регулярные выражения в качестве разделителей поддерживаются только в gawk.

Я бы так написал:

BEGIN {
        count = 0; #Для красоты вывода, если слов нет
}

{
   for(i = 1; i <= NF; i++) if(tolower($i) == "cat") count++;
}

END {
   print "count: " count;
}
proud_anon ★★★★★
()

RS это разделитель строк, ЕМНИП. Разделитель слов - FS.

Прочем man && google

Nicholass ★★★
()

Всем спасибо. Воспользуюсь решением proud_anon'а.

MarvinParanoid
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.