Відомо, що програмами з графічним інтерфейсом зручніше користуватися, оскільки вони розраховані на високі вимоги, плюс термінал дає змогу певні задачі вирішувати значно швидше. Так є утиліта wc, вона може підраховує кількість рядків у файлі. Число рядків мало про що свідчить, а от у випадку, коли поєднується кілька команд, можна підраховувати рядки, враховуючи необхідні параметри. Як підрахувати рядків у файлі Linux? Висвітлимо кілька простих, але ефективних прикладів застосування команд grep, sed і awk.
Нами вже було розглянуто команду WC, тепер слід ознайомитися з одним із її ключових параметрів - -l
. Він підраховує переходи на новий рядок, тобто відбувається підрахунок усього рядка, включно з порожніми. Із завданням впорається команда впорається швидше за всіх інших, проте можливий тільки певних рядків - із заданою умовою.
$ wc -l name_file
$ grep -c $ name_file
$ sed -n $= name_file
$ awk 'END{ print NR }' name_file
Як бачимо, результат однаковий, але команді wc знадобилося менше часу на виконання поставленого завдання. Інші команди застосовні для складних запитів. Команда grep дає змогу виявити рядки тільки з текстом: grep -c 'text' file_name.
$ grep -c 'text' file_name
Команда grep поводиться з регулярними виразами, тому можна об'єднати кілька умов за типом І, АБО, НЕ.
Коли sed виконує обробку тексту, але набагато легше виконати підрахунок числа фінальних рядків командою wc. Можна видалити всі рядки, які мають довжину менше трьох символів, а в складних випадках підрахунок символів здійснюється без коментарів.
$ sed -r '/^.{,3}$/d' file_name | wc -l
Якщо завдання просте, то його можна виконати й іншими способами. Команда awk буде простішою і зрозумілішою.
$ awk 'length >3' file_name | wc -l
Для наочного прикладу роботи команди awk виконаємо підрахунок рядків, одночасно з цим здійснюючи пошук необхідного значення в табличному файлі csv.
У прикладі виконаємо підрахунок числа рядків зі значенням другого параметра понад 50.
$ awk '$2+0 > 50' file_name | wc -l
Додамо 0 до виразу, щоб прибрати всі нечислові вирази.