AWK + COUNT Строки в файле

Существуют различные программы / файлы, которые предоставляют вам эту информацию:

  1. lscpu | grep -i MHz

  2. cat / proc / cpuinfo | grep -i mhz (хотя эта информация явно отсутствует в вашей системе)

  3. cpufreq-info , это наиболее полный:

     $ cpufreq-info 
    cpufrequtils 008: cpufreq-info (C) Доминик Бродовски 2004-2009 
    Сообщайте об ошибках (скрытых), пожалуйста. 
    анализ ЦП 0: 
    driver: acpi-cpufreq 
    ЦП, которые работают на одной и той же аппаратной частоте: 0 
    ЦП, частота которых должна согласовываться программным обеспечением: 0 
    максимальная задержка перехода: 10,0 мкс. 
    аппаратные ограничения: 1,20 ГГц - 2,67 ГГц 
    доступные шаги частоты: 2,67 ГГц, 2,67 ГГц, 2,53 ГГц, 2,40 ГГц, 2,27 ГГц, 2,13 ГГц, 2,00 ГГц, 1,87 ГГц, 1,73 ГГц, 1,60 ГГц, 1,47 ГГц, 1,33 ГГц, 1,20 ГГц { {1}} доступные регуляторы cpufreq: ondemand, производительность 
    текущая политика: частота должна быть в пределах от 1,20 ГГц до 2,67 ГГц. 
    Регулятор ondemand может решить, какую скорость использовать 
    в этом диапазоне. 
    текущая частота ЦП составляет 1,20 ГГц. 
    анализ ЦП 1: 
    драйвер: acpi-cpufreq 
    ЦП, которые работают на одной и той же аппаратной частоте: 1 
    ЦП, частота которых должна координироваться программным обеспечением: 1 
    максимальная задержка перехода: 10,0 мкс. 
    аппаратные ограничения: 1,20 ГГц - 2,67 ГГц 
    доступные шаги частоты: 2,67 ГГц, 2,67 ГГц, 2,53 ГГц, 2,40 ГГц, 2,27 ГГц, 2,13 ГГц, 2,00 ГГц, 1,87 ГГц, 1,73 ГГц, 1,60 ГГц, 1,47 ГГц, 1,33 ГГц, 1,20 ГГц { {1}} доступные регуляторы cpufreq: ondemand, производительность 
    текущая политика: частота должна быть в пределах от 1,20 ГГц до 2,67 ГГц. 
    Регулятор ondemand может решить, какую скорость использовать 
    в этом диапазоне.
    текущая частота ЦП составляет 1,20 ГГц. 
    анализирующий ЦП 2: 
    драйвер: acpi-cpufreq 
    ЦП, которые работают на той же аппаратной частоте: 2 {{1} } Процессоры, частота которых должна координироваться программным обеспечением: 2 
    максимальная задержка перехода: 10,0 мкс. 
    аппаратные ограничения: 1,20 ГГц - 2,67 ГГц 
    доступные шаги частоты: 2,67 ГГц, 2,67 ГГц, 2,53 ГГц, 2,40 ГГц, 2,27 ГГц, 2,13 ГГц, 2,00 ГГц, 1,87 ГГц, 1,73 ГГц, 1,60 ГГц, 1,47 ГГц, 1,33 ГГц, 1,20 ГГц 
    доступные регуляторы cpufreq: ondemand, performance {{1 }} текущая политика: частота должна быть в пределах от 1,20 ГГц до 2,67 ГГц. 
    Регулятор "ondemand" может решить, какую скорость использовать 
    в этом диапазоне. 
    Текущая частота процессора составляет 1,20 ГГц. 
    анализ ЦП 3: 
    драйвер: acpi-cpufreq 
    ЦП, которые работают с одинаковой аппаратной частотой: 3 
    ЦП, частота которых должна координироваться программное обеспечение: 3 
    максимальная задержка перехода: 10,0 мкс. 
    аппаратные ограничения: 1,20–2,67 ГГц 
    доступные шаги частоты: 2. 67 ГГц, 2,67 ГГц, 2,53 ГГц, 2,40 ГГц, 2,27 ГГц, 2,13 ГГц, 2,00 ГГц, 1,87 ГГц, 1,73 ГГц, 1,60 ГГц, 1,47 ГГц, 1,33 ГГц, 1,20 ГГц 
    доступные регуляторы cpufreq: ondemand, performance 
    текущая политика: частота должна быть в пределах от 1,20 ГГц до 2,67 ГГц. 
    Регулятор "ondemand" может решить, какую скорость использовать 
    в этом диапазоне. 
    текущий процессор частота составляет 1,20 ГГц. 
     
0
10.01.2019, 15:49
3 ответа

Использование данных вашего примера:

$ grep -Fo 1007 file | wc -l
      19

Часть grepэтого конвейера будет искать строку1007(флаг -Fиспользуется, потому что мы выполняем сравнение строк, а не сопоставление регулярных выражений ). Он будет возвращать каждый отдельный экземпляр строки в новой строке из-за флага -o. Количество возвращенных строк подсчитывается wc -l.

Если строка встречается дважды в строке входных данных, она будет подсчитана дважды. Если строка является подстрокой другого слова, она также будет учитываться.

Сawk:

$ awk -v str="1007" '{ c += gsub(str, str) } END { print c }' file
19

Это подсчитывает количество раз, когда строка встречается с помощьюgsub()(эта функция возвращает количество раз, когда выполняется замена, и мы применяем ее к каждой строке ввода отдельно )и печатаем общее количество в конце. Интересующая нас строка передается в командной строке с помощью -v str="1007".

5
28.01.2020, 02:16

Если вам нужно использовать awk, вы можете использовать эту команду:

awk '{for (i=1;i<=NF;i++) if ( $i == "word/number that you want to search") c++ }'END'{print c}' filename

0
28.01.2020, 02:16

Команда:

awk '{print gsub("1007",$0)}' filename | awk 'BEGIN{sum=0}{sum=sum+$1}END{print sum}'

-0-praveenk_22@:~ $ 

выход

awk '{print gsub("1007",$0)}' u.txt | awk 'BEGIN{sum=0}{sum=sum+$1}END{print sum}'
19
-0-praveenk_22@:~ $
0
28.01.2020, 02:16

Теги

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