Wc

Матеріал з Вікі ЦДУ
Версія від 15:44, 15 травня 2014; Щербань Евгения (обговореннявнесок)

(різн.) ← Попередня версія • Поточна версія (різн.) • Новіша версія → (різн.)
Перейти до: навігація, пошук

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