Из этого отрывка вы узнаете о многих интересных и полезных командах для работы с текстовыми данными в Linux. Также рассматриваются основы работы с потоками ввода-вывода в bash.
Знакомство с основами Linux от основателя Gentoo:
Часть IЧасть II
- BASH: основы навигации (введение)
- Управление файлами и каталогами
- Ссылки, а также удаление файлов и каталогов
- Замены глобусов (резюме и ссылки)
- Обычные выражения (введение)
- Назначение папок, поиск файлов
- Управление процессом
- Обработка текста и перенаправление
- Модули ядра (резюме и ссылки)
Обработка текста
Вернуться к перенаправлению
Ранее в этой серии руководств мы видели пример использования оператора > для перенаправления вывода команды в файл, как показано ниже:Помимо перенаправления вывода в файл, мы можем воспользоваться такой мощной функцией оболочки, как каналы.$ echo "firstfile" > copyme
Используя каналы, мы можем передавать выходные данные одной команды на вход другой.
Рассмотрим следующий пример: $ echo "hi there" | wc
1 2 9
Символ | используется для подключения командного вывода слева к командному входу справа.
В приведенном выше примере команда echo печатает «привет», за которым следует символ новой строки.
Обычно эти выходные данные отображаются в терминале, но канал перенаправляет их как входные данные для команды wc, которая показывает количество строк, слов и символов.
Пример с каналами (трубами)
Вот еще один простой пример: $ ls -s | sort -n
В этом случае ls -s обычно выводит на терминал текущий каталог с размером, указанным перед каждым файлом.
Однако вместо этого мы передаем выходные данные в команду sort -n, которая сортирует их численно.
Это очень удобно для поиска файлов, которые занимают больше всего места в каталоге.
Следующие примеры более сложны и демонстрируют мощь и удобство, которых можно достичь с помощью каналов.
Ниже мы будем использовать команды, которые еще не рассматривались, но не заостряйте на них слишком много внимания.
Вместо этого сосредоточьтесь на понимании того, как работают каналы и как вы можете использовать их в повседневной работе с Linux.
Распаковка канала
Чтобы разархивировать и распаковать файл, вы можете сделать следующее: $ bzip2 -d linux-2.4.16.tar.bz2
$ tar xvf linux-2.4.16.tar
Недостатком этого метода является создание на диске промежуточного, разархивированного файла.
Поскольку tar может читать данные непосредственно из входных данных (а не из указанного файла), мы можем получить тот же конечный результат, используя канал: $ bzip2 -dc linux-2.4.16.tar.bz2 | tar xvf -
Уууу! Сжатый архив распаковали и мы обошлись без промежуточного файла.
Более аутентичный канал
Вот еще один пример трубы: $ cat myfile.txt | sort | uniq | wc -l
Мы используем cat для отправки содержимого myfile.txt команде сортировки.
Когда sort получает входные данные, они сортируют их построчно в алфавитном порядке и отправляют в таком виде в программу uniq. uniq удаляет повторяющиеся строки (кстати, uniq требует в качестве входных данных отсортированный список) и отправляет результат в wc -l. Ранее мы рассматривали команду wc, но без ее параметров.
Если указана опция -l, команда отображает только количество строк; количество слов и символов в этом случае не отображается.
Вы увидите, что такой канал будет печатать количество уникальных строк в текстовом файле.
Попробуйте создать пару файлов в текстовом редакторе.
Используйте на них эту трубу и посмотрите, какой результат вы получите.
Начинается буря в текстовом редакторе!
Теперь мы кратко рассмотрим команды Linux для стандартной обработки текста.Поскольку сейчас мы будем рассматривать множество программ, у нас не будет места для примеров для каждой из них.
Вместо этого мы рекомендуем вам прочитать man-страницы данных команд (например, набрав man echo) и изучить каждую команду и ее параметры, потратив некоторое время на игру с ними.
Как правило, эти команды выводят на терминал результат обработки, а не изменяют сам файл.
После этого краткого обзора мы более подробно рассмотрим перенаправление ввода-вывода.
Так что да, свет в конце туннеля уже есть.
:) эхо выводит свои аргументы на терминал.
Используйте опцию -e, если вы хотите включить escape-последовательности в выходные данные; например, echo -e 'foo\nfoo' напечатает foo, затем перейдет на новую строку, а затем снова напечатает foo. Используйте опцию -n, чтобы запретить echo добавлять символ новой строки в конец вывода, как это происходит по умолчанию.
кот выведет содержимое указанного файла на терминал.
Удобно в качестве первой команды канала, например, cat foo.txt | бла.
Сортировать отобразит содержимое файла, указанного в командной строке, в алфавитном порядке.
Естественно, sort также может принимать входные данные из канала.
Введите man sort, чтобы просмотреть параметры команды, управляющие параметрами сортировки.
уникальный принимает уже отсортированный файл или поток данных (через канал) и удаляет повторяющиеся строки.
Туалет отображает количество строк, слов и символов в указанном файле или во входном потоке (из канала).
Введите man wc, чтобы узнать, как настроить вывод программы.
голова печатает первые десять строк файла или потока.
Используйте опцию -n, чтобы указать, сколько строк должно отображаться.
хвост печатает последние десять строк файла или потока.
Используйте опцию -n, чтобы указать, сколько строк должно отображаться.
такт похожий на кот , но печатает все строки в обратном порядке, другими словами, первая строка печатается первой.
расширять Преобразует входные символы табуляции в пробелы.
Опция -t определяет размер вкладки.
свернуть Преобразует пробелы ввода в символы табуляции.
Опция -t определяет размер вкладки.
резать используется для извлечения полей, разделенных указанным символом, из входного файла или потока.
(попробуйте echo 'abc def ghi jkl' | Cut -d ' ' -f2,2 примерно.
) Команда Нидерланды добавляет к каждой входной строке ее номер.
Удобен для печати.
пиар разбивает файл на страницы и нумерует их; обычно используется для печати.
тр — инструмент перевода (конвертации) символов; используется для сопоставления определенных символов во входном потоке с указанными символами в выходном потоке.
СЭД — мощный поточно-ориентированный текстовый редактор.
Вы можете узнать больше о sed из следующих руководств на сайте Funtoo:
Если вы планируете сдавать экзамен LPI, обязательно прочтите первые две статьи этой серии.ок — умелый язык построчного анализа и обработки входного потока по заданным шаблонам.
Чтобы узнать больше о awk, прочитайте следующую серию руководств на веб-сайте Funtoo:
од предназначен для представления входного потока в восьмеричном, шестнадцатеричном и т. д. формате.расколоть — Эта команда используется для разделения больших файлов на несколько более мелких, более управляемых частей.
ФМТ используется для «переноса» длинных строк текста.
Сегодня он не очень полезен, поскольку встроен в большинство текстовых редакторов, хотя команда достаточно хороша, чтобы его знать.
вставить принимает два или более файлов в качестве входных данных, объединяет их построчно и выводит результат. Может быть полезно для создания таблиц или столбцов текста.
присоединиться Подобно вставке, эта утилита позволяет объединить два файла, используя общее поле (по умолчанию первое поле в каждой строке).
тройник печатает входные аргументы в файл и на экран одновременно.
Это полезно, когда вы хотите создать журнал для чего-либо, а также хотите видеть процесс на экране.
Шторм закончился! Перенаправление
Как и > в командной строке, вы можете использовать < to redirect a file, but to the input of a command. For many commands, you can simply specify the file name. Unfortunately, some programs only work with standard input. Bash и другие оболочки поддерживают концепцию «herefile».Это позволяет вводить команду в виде последовательности строк, за которой следует команда, указывающая конец входной последовательности значений.
Самый простой способ показать это на примере: $ sort <<END apple
cranberry
banana
END
apple
banana
cranberry
В приведенном выше примере мы вводим слова яблоко, клюква и банан, а затем «КОНЕЦ», чтобы указать конец ввода.
Затем программа сортировки возвращает наши слова в алфавитном порядке.
Использование «> > »
Вы могли бы ожидать, что > > будет чем-то похоже на <<, but it's not. It allows you to simply append the output to a file, rather than overwriting it every time, as > делает. Пример: $ echo Hi > myfile
$ echo there. > myfile
$ cat myfile
there.
Упс! Мы потеряли часть с «Привет»! Вот что мы имели в виду:
$ echo Hi > myfile
$ echo there. >> myfile
$ cat myfile
Hi
there.
Так-то лучше! Спасибо Дмитрий Минский ([email protected]) за перевод. Продолжение.
Об авторах
Дэниел Роббинс
Дэниел Роббинс — основатель сообщества Gentoo и создатель операционной системы Gentoo Linux. Дэниел проживает в Нью-Мексико со своей женой Мэри и двумя энергичными дочерьми.
Он также является основателем и главой Funtoo написал множество технических статей для IBM DeveloperWorks , Службы разработчиков Intel и журнал пользователей C/C++.
Крис Хаузер
Крис Хаузер является сторонником UNIX с 1994 года, когда он присоединился к административной команде Университета Тейлора (Индиана, США), где получил степень бакалавра в области компьютерных наук и математики.С тех пор он работал в различных областях, включая веб-приложения, редактирование видео, драйверы UNIX и криптографическую безопасность.
В настоящее время работает в Sentry Data Systems. Крис также участвовал во многих бесплатных проектах, таких как Gentoo Linux и Clojure, и был соавтором книги.
Арон Гриффис
Айрон Гриффис живет в Бостоне, где последние десять лет он работал в Hewlett-Packard над такими проектами, как сетевые драйверы UNIX для Tru64, сертификация безопасности Linux, виртуализация Xen и KVM, а в последнее время — над платформой.Когда он не занимается программированием, Айрон любит думать о проблемах программирования, катаясь на велосипеде, жонглируя битами или болеея за профессиональную бейсбольную команду Boston Red Sox. Теги: #linux #консоль #настройка Linux #основы #начинающим #для чайников #обработка текста #перенаправления
-
Qaкачество Связи – 5 Октября, Онлайн
19 Oct, 24 -
Баг Double.parsedouble() В Android
19 Oct, 24 -
Nokia N96 – Первая Официальная Информация
19 Oct, 24