підрахувати кількість рядків у термінальному виході


264

не вдалося знайти це на SO. Я запустив таку команду в терміналі:

>> grep -Rl "curl" ./

і тут відображається список файлів, у яких відбувається скручування ключового слова. Я хочу порахувати кількість файлів. Перший спосіб, про який я можу подумати, - це підрахувати кількість рядків у висновку, що надійшов до терміналу. Як я можу це зробити?


40
У самій -c
грепі

Відповіді:


475

Отримайте результат до wc допомогою перемикача -l( кількість рядків ):

grep -Rl "curl" ./ | wc -l

1
Я використовую, grep "" -cале це набагато приємніше :)
ninhenzo64

3
Слід зазначити, що ця хитрість трубопроводу до wc буде працювати для будь-якого виходу, а не лише для греп-виводу. Наприклад, його можна поєднувати з git diff.
Джейсон Л.

1
Чому це прийнята відповідь? Як зазначалося в деяких коментарях, функцію збирання grep -cслід використовувати замість передачі виводу в іншу програму. Наприклад, ви навіть не змінювали символи у вашому документі Word іншим текстовим редактором, ніж Word, чи не так?
Майкл П

57

Поміщуючи тут коментар EaterOfCode як відповідь.

Греп сам також має прапор -c, який просто повертає рахунок

Отже команда та вихід можуть виглядати приблизно так.

$ grep -Rl "curl" ./ -c
24

Редагувати:

Хоча ця відповідь може бути коротшою і, таким чином, може здатися кращою, ніж прийнята відповідь (що використовується wc). Я з цим більше не згоден. Мені здається, що я пам’ятаю, що ти можеш рахувати рядки, переходячи по каналах wc -l, набагато корисніше, оскільки ти можеш використовувати їх і з іншими програмами grep.


5

Якщо трубопровід до 'wc' може бути кращим, якщо останній рядок закінчується новим рядком (я знаю, що в цьому випадку так і буде)
Однак, якщо останній рядок не закінчується новим рядком 'wc -l', дає хибний результат.

Наприклад:

$ echo "asd" | wc -l

Повернеться 1і

$ echo -n "asd" | wc -l

Повернеться 0


Тож я часто використовую grep <anything> -c

$ echo "asd" | grep "^.*$" -c
1

$ echo -n "asd" | grep "^.*$" -c
1

Це ближче до реальності, ніж те wc -l, що повернеться.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.