wc — посчитать строки, слова и байты
Команда wc считает строки (-l), слова (-w), байты (-c) и символы (-m) в файле или в выводе другой команды.
Шпаргалка
7 команд Версия для печати-
wc file.txtстроки, слова, байты и имя -
wc -l file.txtтолько строки: «2 file.txt» -
wc -l < file.txtтолько число: «2» -
grep error app.log | wc -lсколько строк с error -
wc -l *.logпо каждому файлу и total -
find /etc -name '*.conf' | wc -lсколько файлов нашлось -
wc -m text.txtсимволы, а не байты
Обзор
wc (word count) печатает три числа: строки, слова и байты. Слово — кусок текста
между пробелами, табуляциями и переводами строк. Ключи -l, -w, -c оставляют
только нужное число:
Строкой wc считает каждый символ перевода строки. Когда имя дано аргументом,
wc печатает его рядом с числом. Когда текст пришёл на ввод — через < или
конвейер, — имени нет, остаётся одно число. Его удобно подставлять в
скрипт или сравнивать.
Ключи
5Ключи можно сочетать: wc -lw печатает строки и слова. Полный список — man wc.
| Ключ | Что делает | Пример |
|---|---|---|
-l --lines |
Сколько строк (переводов строки). | wc -l app.log |
-w --words |
Сколько слов, разделённых пробелами и переводами строк. | wc -w notes.txt |
-c --bytes |
Сколько байт. | wc -c image.png |
-m --chars |
Сколько символов по локали; в UTF-8 кириллица — один символ на букву. | wc -m text.txt |
-L --max-line-length |
Ширина самой длинной строки. | wc -L config.yaml |
Ничего не найдено. Попробуй запрос короче.
Рецепты
5Сколько файлов в каталоге
ls | wc -l тоже считает, но не видит скрытые файлы, а ls -l | wc -l добавит
строку total.
Сколько разных значений
Размер нескольких файлов сразу
Самая длинная строка
Неполадки
5wc -l показывает на одну строку меньше
wc считает переводы строки. Если последняя строка файла без \n, её не
посчитают: printf 'a\nb' | wc -l печатает 1.
В выводе лишнее имя файла
Имя печатается, когда файл передан аргументом. Подай файл на ввод:
wc -l < file.txt.
wc -c и wc -m дают разные числа
-c считает байты, -m — символы по локали. В UTF-8 русская буква —
один символ и два байта: у привет с переводом строки -c даёт 13, -m — 7.
ls | wc -l считает не то число файлов
ls без -A пропускает скрытые файлы, ls -l добавляет строку total. Считай
через find … | wc -l.
wc: x: Is a directory
wc читает файлы, а не каталоги. Сколько в каталоге файлов — через find:
find x -type f | wc -l.
См. также
- grep — отобрать строки перед подсчётом;
grep -cсчитает сам. - sort и uniq — убрать повторы, чтобы считать разные значения.
- find — найти файлы, которые потом считаешь.
- redirection — ввод из файла
<и конвейер|. - text-tools — tr, paste, column и другие звенья конвейера.
Есть неточность? Сообщить об ошибке в статье