UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
sed 3qХотя
3qedsedОт вас может потребоваться другая работа с данными, например вставка пробелов. Один из способов заключается в том, чтобы выходной поток
sedindsedsedsed 'S/^/→/3q'Обратите внимание, где находятся кавычки и символ перевода строки: команды должны быть на отдельных строках, но редактор игнорирует пробелы и символы табуляции в начале строки.
Представляется естественным с помощью рассмотренных выше приемов составить программу
headsed 3q10qindsedind/binМожно помещать команды редактора
sed$ sed -f командный_файлВы можете обращаться к строкам, используя не только их номера. Так, команда
$ sed '/шаблон/q'выдает из входного потока все строки до первой включительно, которые соответствуют шаблону, а команда
$ sed '/шаблон/d'удаляет каждую строку, содержащую шаблон; удаление происходит до автоматического вывода строк, поэтому удаленные строки не учитываются.
Хотя автоматический вывод обычно удобен, иногда он мешает. Его можно отключить с помощью флага
-n$ sed -n '/шаблон/p'эквивалентен команде
grep!$ sed -n '/шаблон/!p'эквивалентно команде
grep -vsed '/шаблон/d'Для чего нужны две команды
sedgrepgrepsedgrepsedgrepsedsed-bgressedИспользуя запись, такую же, как в редакторе
edsed$ sed '/$/> /'Здесь добавляется символ перевода строки к каждой строке, и таким образом пустые строки вставляются во входной поток, а команда
$ sed 's/[→][→]*/>/g'заменяет каждую последовательность пробелов или символов табуляции на символ перевода строки, т. е. разбивает входной поток на строки из одного слова. (Регулярное выражение
'[→]''[→]*'Можно также использовать пару регулярных выражений или номеров строк для задания диапазона строк, к которому будет применяться произвольная команда.
$ sed -n '20,30p' $ sed '1,10d' $ sed '1,/^$/cd' $ sed -n '/^$/,/^end/p' строки, начинающейся с end
$ sed '$d' Строки нумеруются с начала входного потока; обнуление не происходит с началом нового файла.
У команды
seded+-$ sed '$-1d'Unrecognized command: $-1d$Если строка считана, предыдущая исчезла навсегда: нет способа специфицировать предыдущую строку, а именно это требуется в команде. В принципе такой способ есть в команде
sedhold$ sed '/что-то/+1d'Редактор
sed$ sed -n '/шабл/w файл1> /шабл/!w файл2' имена_файлов...
