Известно, что программами с графическим интерфейсом удобней пользоваться, поскольку они рассчитаны на высокие требования, плюс терминал позволяет определенные задачи решать значительно быстрей. Так есть утилита wc, она может подсчитывает количество строк в файле. Число строк мало о чем говорит, а вот в случае, когда совмещается несколько команд, можно считать строки, учитывая необходимые параметры. Как подсчитать строк в файле Linux? Осветим пару простых, но эффективных примеров применения команд grep, sed и awk.
Нами уже была рассмотрена команда WC, теперь следует ознакомиться с одним из ее ключевых параметров - -l. Он подсчитывает переходы на новую строку, то есть происходит подсчет всей строки, включая и пустые. С задачей справится команда справляется быстрей всех остальных, однако возможен только определенных строк - с заданным условием.
$ wc -l имя_файла
$ grep -c $ имя_файла
$ sed -n \$= имя_файла
$ awk 'END{ print NR }' имя_файла
Как видим, результат одинаков, но команде wc потребовалось меньше времени на выполнение поставленной задачи. Остальные команды применимы для сложных запросов. Команда grep позволяет обнаружить строки только с текстом: grep -c 'текст' имя_файла.
$ grep -c 'текст' имя_файла
Команда grep обращается с регулярными выражениями, поэтому можно объединить несколько условий по типу И, ИЛИ, НЕ.
Когда sed выполняет обработку текста, но намного легче выполнить подсчет числа финальных строк командой wc. Можно удалить все строки, которые имеют длину менее трех символов, а сложных случаях подсчет символов осуществляется без комментариев.
$ sed -r '/^.{,3}$/d' имя_файла | wc -l
Если задача простая. то ее можно выполнить и другими способами. Команда awk будет проще и понятней.
$ awk 'length >3' имя_файла | wc -l
Для наглядного примера работы команды awk выполним подсчёт строк, одновременно с этим осуществляя поиск необходимого значения в табличном файле csv.
В примере выполним подсчет числа строк со значением второго параметра более 50.
$ awk '$2+0 > 50' имя_файла | wc -l
Добавим 0 к выражению, чтобы убрать все нечисловые выражения.