Покоряй и Властвуй: форматирование вывода Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
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}}