Wc
wc (абревіатура від «word count») — утиліта UNIX-подібних операційних систем, що підраховує кількість рядків, слів чи байт у вказаних файлах, а також їх суму, якщо вказано більше одного файлу. Якщо файли не вказуються, тоді команда зчитує дані зі стандартного вводу.
Команда wc без опцій та аргументу
Будучи запущена без опцій і аргументу,команда wc підраховує кількість рядків,слів і байт в стандартному вводі (наприклад,з клавіатури):
$ wc (Enter) когда (Enter) мы были (Enter) молоды (Enter + Ctrl-d) 3 4 38
На виході команди ми бачимо три числа: кількість рядків( 3 ),кількість слів( 4 ) і кількість байт(38).
Робота з файлами
Команда wc приймає файл як аргумент:
$ wc onegin.txt 14 61 668 onegin.txt
Це 14 рядків першої строфи "Євгенія Онєгіна".
Команда wc приймає як аргумент будь-яку кількість файлів. Ці файли вказуються через пробіл, при необхідності з усіма своїми шляхами (path):
$ wc /etc/fstab /boot/grub/menu.lst /home/ya/Desktop/wc-ru.txt 11 66 918 /etc/fstab 34 102 776 /boot/grub/menu.lst 69 185 2445 /home/ya/Desktop/wc-ru.txt 114 353 4139 итого
Команда вкаже параметри кожного з файлів, а наприкінці підсумовує підсумок.
Можна також задати підрахунок параметрів всіх файлів в директорії:
~/Desktop$ wc * wc: Documents: Is a directory 0 0 0 Documents 9 14 207 MyComputer.desktop 3 4 38 mol.txt 14 61 668 onegin.txt 114 156 1715 shema.txt 150 318 5066 trash.desktop wc: wc: Is a directory 0 0 0 wc 69 185 2445 wc-ru.txt 15 18 258 Дисковод 1 0 2 Текстовый файл 375 756 10399 итого
але це має сенс робити тільки з директоріями, що містять лише текстові файли. Якщо в директорії будуть знаходитися бінарні або .html файли, то з'явиться безліч повідомлень типу "Invalid or incomplete multibyte or wide character", що можна перекласти як "Пошкоджені, або неповні, або розширені символи". А ось самостійно вибирати тільки текстові файли команда wc не вміє.
Синтаксис
wc [-clmw] [файл ...]
Опції команди wc
Опція - l
Підраховує тільки кількість рядків:
$ wc -l onegin.txt 14 onegin.txt
Корисним видається використання цієї опції в складі програмного каналу з командою ls для підрахунку кількості файлів в директоріях:
~/Desktop$ ls | wc -l 10
Це підрахунок файлів в поточній директорії, а от підрахунок всіх файлів рекурсивно (включаючи підкаталоги і підкаталоги підкаталогів):
$ ls -R /home | wc -l 355
Опція - L
Підрахує довжину найбільшого рядка (але не вказує її номер):
$ wc -L onegin.txt 31 onegin.txt
Опція - m
Підраховує тільки кількість символів (включаючи пробіли, табуляцію, символи нового рядка):
$ wc -m onegin.txt 373 onegin.txt
Опція - c
Підраховує байти в зазначеному потоці даних. Ця опція, на відміну від інших опцій команди wc, може застосовуватися до будь яких даних, а не тільки до текстових. Скажімо, вона може підрахувати число байт в будь-якому двійковому файлі, навіть графічному:
$ wc -c top.jpg 29559 top.jpg
І навіть визначити розмір розділу жорсткого диска:
$ wc -c /dev/hdb1 1003451904 /dev/hdb1
розмір цього розділу близько 1Гб.
Але можна підраховувати байти не тільки в файлах, але і в стандартному виводі інших програм і процесів.
Наприклад:
$ dmesg | grep -i 'usb' | wc -c 2130
Опція - w
Пише в стандартний висновок число слів, що містяться в кожному вхідному файлі.
Наприклад,підрахувати кількість слів у файлі:
# wc -w /data/file