Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2008-12-29

HuMan: tr

Многие знают, что юникс и его инструменты использовались в AT&T как инструменты для работы с текстом (кажется, патентное дело).
Это обьясняет развитость инструментов обработки текста. К сожалению, в понятие текста не входит кириллица (часто).

... возможности команды tr не ограничиваются заменой одной буквы. Команда может заменять любое количество указанных символов на другие символы. В этом случае каждый из наборов символов заключается в квадратные скобки, а скобки, в свою очередь, в кавычки; безразлично, двойные или одинарные.

'[набор1]' '[набор2]' или "[набор1]" "[набор2]"

В наборе1 один подряд перечисляются символы, подлежащие замене, а в наборе2 - в соответствующем порядке символы, которые их должны заменить:

$ echo cheer | tr '[abcdefghijklmnopqrstuvwxyz]' '[hijklmnopqrstuvwxyzabcdefg]'
jolly


Для современных версий (у меня, например, tr GNU coreutils 5.97) все эти квадратные скобки и кавычки не обязательны, можно просто перечислять символы:

$ echo cheer | tr abcdefghijklmnopqrstuvwxyz hijklmnopqrstuvwxyzabcdefg
jolly


Работает не хуже.

Если буквы идут по алфавиту, то можно не перечислять их все, а указать диапазон при помощи черточки, например a-z. Этим часто пользуются для перевода символов из нижнего в верхний регистр и наоборот:


$ echo lower_case | tr '[a-z]' '[A-Z]'
LOWER_CASE


Кроме того, команда умеет удалять символы, перечисленные в наборе1, заменять повторяющиеся символы одиночными и кое-что еще. ...

rus-linux.net

Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) humor (23) Java (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Klaipeda (15) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) Baltic (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) seaside (1) serialization (1) shore (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)