Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
fullcircle:21:форматирование_вывода [2010/04/02 20:18] |
fullcircle:21:форматирование_вывода [2012/03/28 22:42] (текущий) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
======Покоряй и Властвуй: форматирование вывода====== | ======Покоряй и Властвуй: форматирование вывода====== | ||
- | Автор: Лукас Вестерман (Lucas Westermann) | + | |
+ | <style right> | ||
+ | //Автор: Лукас Вестерман (Lucas Westermann)// | ||
+ | </style> | ||
Вэтом выпуске мы расскажем об основных возможностях форматирования вывода с помощью команд grep, sed, awk, cat и cut. Это может быть очень полезным, если соединять вместе такие вещи как Conky или скрипты, которые отображают информацию в терминале. | Вэтом выпуске мы расскажем об основных возможностях форматирования вывода с помощью команд grep, sed, awk, cat и cut. Это может быть очень полезным, если соединять вместе такие вещи как Conky или скрипты, которые отображают информацию в терминале. | ||
- | Сначала рассмотрим работу команды cut. Если бы мы хотели отобразить название дистрибу-тива в нашем скрипте, мы нашли бы его в /etc/issue. Если мы выполним cat /etc/issue, мы увидим много длинных строк со множеством экранирующих символов в них. Так, если мы выполним cat /etc/issue | head -n 1, мы уберём дополнительные строки, сузив вывод команды cat с помощью команды head, которая оставит только первую строку вывода. Пока всё хорошо, но что насчёт специальных символов? Для таких случаев у нас есть cut. Чтобы её использовать, мы должны указать разделитель, а затем сказать ей, что с ним делать. Мы могли бы выполнить следующую команду: | + | Сначала рассмотрим работу команды cut. Если бы мы хотели отобразить название дистрибутива в нашем скрипте, мы нашли бы его в /etc/issue. Если мы выполним cat /etc/issue, мы увидим много длинных строк со множеством экранирующих символов в них. Так, если мы выполним cat /etc/issue | head -n 1, мы уберём дополнительные строки, сузив вывод команды cat с помощью команды head, которая оставит только первую строку вывода. Пока всё хорошо, но что насчёт специальных символов? Для таких случаев у нас есть cut. Чтобы её использовать, мы должны указать разделитель, а затем сказать ей, что с ним делать. Мы могли бы выполнить следующую команду: |
<code>cat /etc/issue|head -n 1|cut –-delimiter=' ' -f 1,2</code> | <code>cat /etc/issue|head -n 1|cut –-delimiter=' ' -f 1,2</code> | ||
Строка 12: | Строка 15: | ||
<code>cat /etc/issue|sed '{s/\\n// ; s/\\l// ; /^$/d}'</code> | <code>cat /etc/issue|sed '{s/\\n// ; s/\\l// ; /^$/d}'</code> | ||
- | Это может показаться лишним, но первые два выражения (каждое из них разделено точкой с запятой) говорят sed заменить “\n” на “” (ничего), и то же самое для “\l”, убирая эти символы из вывода. Команда “/^$/d” говорит sed удалить все пустые строки (“^$” - это регулярное выражение для строки, которая начинается и заканчивается пустым символом, и посередине тоже ничего нет - т.е. пустая строка). %Так 's/\\n\b//' просто говорит sed заменить (“s/”) “\n” (“\\n”) на “” (“//”). %Причина, по которой эта команда в скобках, в том, что мы применяем три выражения на выходе, и хотим, чтобы результат появился только один раз, поэтому мы поместили выражения в скобки (“{}”), и разделили точкой с запятой. | + | Это может показаться лишним, но первые два выражения (каждое из них разделено точкой с запятой) говорят sed заменить “\n” на “” (ничего), и то же самое для “\l”, убирая эти символы из вывода. Команда “/^$/d” говорит sed удалить все пустые строки (“^$” - это регулярное выражение для строки, которая начинается и заканчивается пустым символом, и посередине тоже ничего нет - т.е. пустая строка). %%Так 's/\\n\b//' просто говорит sed заменить (“s/”) “\n” (“\\n”) на “” (“//”). %%Причина, по которой эта команда в скобках, в том, что мы применяем три выражения на выходе, и хотим, чтобы результат появился только один раз, поэтому мы поместили выражения в скобки (“{}”), и разделили точкой с запятой. |
В заключение, такой же результат мы можем получить с помощью awk: | В заключение, такой же результат мы можем получить с помощью awk: | ||
Строка 25: | Строка 28: | ||
Дополнительная информация: | Дополнительная информация: | ||
- | Sed - http://www.grymoire.com/Unix/Sed.html | + | sed - http://www.grymoire.com/Unix/Sed.html |
awk - http://www.linuxjournal.com/article/8913 или http://www.linuxfocus.org/English/September1999/article103.html | awk - http://www.linuxjournal.com/article/8913 или http://www.linuxfocus.org/English/September1999/article103.html | ||
+ | |||
cut - http://learnlinux.tsf.org.za/courses/build/shell-scripting/ch03s04.html | cut - http://learnlinux.tsf.org.za/courses/build/shell-scripting/ch03s04.html | ||
Строка 33: | Строка 38: | ||
это очень полезно, если вы не уверены, как правильно выполнять команду. | это очень полезно, если вы не уверены, как правильно выполнять команду. | ||
- | + | <note tip>Lucas научился всему, что знает, ломая систему, которую потом приходится учиться восстанавливать. Когда есть время, он также ведёт блог* http://lswest-ubuntu.blogspot.com.</note> | |
+ | |||
+ | ---- | ||
+ | <style center> | ||
+ | //[[..:21|К содержанию номера]]// | ||
+ | |||
+ | //[[:fullcircle|К архиву журналов]]// | ||
+ | </style> | ||
+ | |||
+ | {{tag>Программирование Full_Circle}} |