Команда SED в Linux/Unix с примерами
Компиляция из двух смежных статей на тему использования команды sed для редактирования текстовых файлов, включая различные варианты поиска и замены шаблонов, а также всевозможные операции со строками. Идею к публикации этого гайда подал участник nronnie в комментарии к предыдущей статье, посвящённой работе с Bash.
SED – это потоковый редактор текста (от s tream ed itor), c помощью которого можно выполнять с файлами множество операций вроде поиска и замены, вставки или удаления. При этом чаще всего он используется именно для поиска и замены.
SED позволяет редактировать файлы, не открывая, что существенно ускоряет работу, чем при использовании того же vi. Помимо этого, SED поддерживает регулярные выражения, с помощью которых можно выполнять сложное сопоставление шаблонов.
Общий синтаксис команды sed выглядит так:
Сами же варианты её использования мы рассмотрим на примере следующего отрывка текста:
Примеры команд
1. Замена заданного шаблонаСледующая команда заменит в целевом файле вхождения слова unix на linux :
Здесь s обозначает операцию замены, а прямые слэши выступают разделителями. В качестве искомого шаблона используется unix , а в качестве его замены linux .
По умолчанию команда sed заменяет первое вхождение шаблона в каждой строке, не затрагивая второе, третье и т.д.
2. Замена n-ого вхождения шаблона в строкеВхождения, которые нужно заменить, обозначаются с помощью флагов /1 , /2 и т.д. К примеру, следующая команда заменит в каждой строке второе вхождение:
3. Замена всех вхождений шаблона в файлеДя замены всех без исключения вхождений заданного шаблона используется глобальный флаг /g :
4. Замена всех вхождений шаблона в строке начиная с n-огоДля этого номер вхождения, с которого нужно начать, сопровождается флагом g . Следующая команда заменит в каждой строке третье, четвёртое и т.д. вхождения слова unix на слово linux :
5. Заключение первых символов слов в скобкиСледующая команда заключит в скобки первый символ каждого слова:
6. Замена шаблона в конкретной строкеМожно ограничить выполнение команды sed нужной строкой:
Вышеприведённая команда заменяет заданное слово только в третьей строке.
7. Дублирование изменяемых строкПри установке флага /p команда дублирует в терминале строки, где производит замену. Строки, в которых искомый шаблон отсутствует, не дублируются.
8. Вывод только строк с заменойЕсли рядом с флагом /p добавить ключ -n , в терминале отобразятся только строки, где выполнялась замена. В данном случае -n отключает дублирующее поведение флага /p , поэтому строки с заменой выводятся по одному разу.
Если использовать только -n , исключив /p , вывод команда не произведёт.
9. Замена шаблона в указанном диапазоне строкsed позволяет указывать диапазон строк, в которых требуется заменить определённый шаблон:
Здесь sed производит замену в строках с 1 по 3. А вот ещё один пример:
Здесь $ указывает на последнюю строку файла, в связи с чем sed заменяет первые вхождения шаблона, начиная со второй и заканчивая ей.
10. Удаление строк из файлаС помощью sed также можно удалять строки из заданного файла:
10.1 Удаление n-ой строки:
Синтаксис: $ sed 'nd' filename.txt Пример: $ sed '5d' filename.txt
10.2 Удаление последней строки:
Синтаксис: $ sed '$d' filename.txt
10.3 Удаление строк с x> по y:
Синтаксис: $ sed 'x,yd' filename.txt Пример: $ sed '3,6d' filename.txt
10.4 Удаление строк с n-ой до последней:
Синтаксис: $ sed 'n,$d' filename.txt Пример: $ sed '12,$d' filename.txt
10.5 Удаление текста, соответствующего шаблону:
Синтаксис: $ sed '/pattern/d' filename.txt Пример: $ sed '/abc/d' filename.txt
Примеры команд (продолжение)
Во второй части мы разберём ещё одну серию операций с командой sed на примере уже другого файла, a.txt. Чтобы излишне не растягивать статью, вывод команд далее приводится не будет, так что для лучшего понимания можете самостоятельно попрактиковаться, создав такой же файл с аналогичным содержимым.
Добавление/удаление пустых строк в файле1. Вставить после каждой текстовой строки одну пустую:
2. Вставить две пустые строки:
3. Удалить все пустые строки и вставить по одной после каждой текстовой:
4. Вставить пустую строку над каждой, содержащей love :
5. Вставить пустую строку после каждой, содержащей love :
6. Вставить 5 пробелов слева от каждой строки:
Нумерация строк1. Пронумеровать каждую строку файла (с левым выравниванием).
В этой команде символ = используется для нумерации строки, а флаг \t для табулирования между номером и предложением:
]# sed = a.txt | sed 'N;s/\n/\t/'
2. Пронумеровать каждую строку файла (число слева, выравнивание по правому краю).
Эта команда похожа на `cat -n filename` :
3. Пронумеровать каждую непустую строку файла:
Удаление строк1. Удалить конкретную строку:
Синтаксис: sed ‘nd’ filename Пример: [root@rhel7
2. Удалить последнюю строку:
Синтаксис: sed ‘$d’ filename
3. Удалить строки с x по y :
Синтаксис: sed ‘x,yd’ filename Пример: [root@rhel7
4. Удалить строки с n-ой до последней:
Синтаксис: sed ‘n,$d’ filename Пример: [root@rhel7
5. Удалить строку, содержащую шаблон:
Синтаксис: sed ‘/pattern/d’ filename Пример: [root@rhel7
6. Удалить каждую вторую строку начиная с n-ой:
Синтаксис: sed ‘n
2d’ filename Пример: [root@rhel7
7. Удалить строки, содержащие шаблон, и по две строки после них:
Синтаксис: sed ‘/pattern/,+2d’ filename Пример: [root@rhel7
]# sed '/easy/,+2d' a.txt
8. Удалить пустые строки:
9. Удалить пустые строки или начинающиеся с # :
Просмотр/вывод строкДля просмотра содержимого файла мы используем команду cat , а его начало и конец просматриваем с помощью утилит head и tail . Но что, если нас интересует некий участок в середине файла? В таком случае можно снова задействовать sed .
1. Просмотреть файл со строки x по y:
Синтаксис: sed -n ‘x,yp’ filename Пример: [root@rhel7
2. Просмотреть весь файл, за исключением заданного диапазона:
Синтаксис: sed ‘x,yd’ filename Пример: [root@rhel7
3. Вывести n-ую строку файла:
Синтаксис: sed -n ‘address’p filename Пример: [root@rhel7
4. Вывести строки с x по y:
Синтаксис: sed -n ‘x,y’p filename Пример: [root@rhel7
5. Вывести только последнюю строку:
Синтаксис: sed -n ‘$’p filename
6. Вывести с n-ой строки до последней:
Синтаксис: sed -n ‘n,$p’ filename Пример: [root@rhel7
7. Вывести строки, содержащие указанный шаблон:
Синтаксис: sed -n /pattern/p filename Пример: [root@rhel7
]# sed -n /every/p a.txt
8. Вывести строки начиная с первой, где обнаружен шаблон, и до строки x:
Синтаксис: sed -n ‘/pattern/,xp’ filename Пример: [root@rhel7
]# sed -n '/everyone/,5p' a.txt
В данном случае первое вхождение everyone содержится в строке 3, значит в терминале отобразятся строки с 3 по 5. Если нужно вывести файл до конца, используйте вместо 5 символ $ .
9. Вывести строки с x и до строки, содержащей шаблон. Если шаблон не обнаруживается, выводится файл до конца:
Синтаксис: sed -n ‘x,/pattern/p’ filename Пример: sed -n '1,/everyone/p' a.txt
10. Вывести все строки, содержащие шаблон, включая следующие за каждой из них x строк:
Синтаксис: sed -n ‘/pattern/,+xp’ filename Пример: sed -n '/learn/,+2p' a.txt
Замена с помощью команды sed (дополнение)
Ниже приводится небольшой список операций, дополняющий перечисленные ранее.
1. Два способа замены шаблона, игнорируя регистр:
1.1 Использовать флаг /i :
Синтаксис: sed ‘s/old_pattern/new_pattern/i’ filename Пример: [root@rhel7
]# sed 's/life/Love/i' a.txt
1.2 Использовать регулярные выражения:
]# sed 's/[Ll]ife/Love/g' a.txt
2. Замена нескольких пробелов одним:
Пример: [root@rhel7 clang]# sed ‘s/ */ /g’ filename
3. Замена шаблона, сопровождающего другой шаблон:
Синтаксис: sed ‘/followed_pattern/ s/old_pattern/new_pattern/’ filename Пример: [root@rhel7
]# sed '/is/ s/live/love/' a.txt
10. Замена шаблона другим шаблоном, за исключением строки n:
Синтаксис: sed ‘n!s/old_pattern/new_pattern/’ filename Пример: [root@rhel7
]# sed -i '5!s/life/love/' a.txt
Водопровод в современной квартире
Здравствуйте, меня зовут Александр Шваров. Моя команда занимается монтажом и установкой сантехники.
Я заметил что в последние годы среди наших заказчиков в процентном соотношений очень много тех кто занят в сфере IT. Разговорившись с одним из заказчиков я узнал про сайт Хабр, на котором общаются специалисты IT. Я подумал, что специалисты It которые делают ремонт в своей квартире или загородном доме являются моими потенциальными клиентами, поэтому я решил зарегистрироваться на этом портале и написать эту статью. В статье я раскрою тему инженерной сантехники, возможно это пригодится кому-то из участников сообщества хабр, а также будет интересно для меня. Я не имею большого опыта в написании статей, поэтому подача может быть немного хаотичной. Поэтому я с удовольствием отвечу на вопросы, если они у вас появятся.
А вот примеры работ которые я делал именно для специалистов IT. В большинстве своем это квартиры с современный сантехникой, но может быть среди владельцев загородных домов в которых мы делали инженерные сети тоже были специалисты IT.
Перед тем как перейти к разговору о сантехнике вкратце расскажу о себе.
У меня высшее техническое образование , ещё во время обучения в институте, а форма обучения у меня была очно-заочная, поэтому я официально мог устроиться на работу во время обучения, я искал себе работу в газете, ко мне подошел знакомый и поинтересовался чем я занимаюсь, я ответил ему что ищу работу, он сказал: иди работать сантехником никогда не останешься без куска хлеба, я сказал что ничего в этом не понимаю и ничего не умею он сказал что поможет мне. С его помощью я оказался в сантехнике, пробовал разные вариации в том числе работал мастером аварийной службы, занимался капитальным ремонтом, но потом опять вернулся к работе руками. Потихоньку пришел к тому, что мне нравится делать хорошо, не смотря на то, что в обслуживающих организациях нет простора для обширной деятельность, всё что я делал я старался делать хорошо.
Я менял места работы, поскольку везде мне было не комфортно я всегда стремился к тому чтобы достичь чего-то большего но не понимал что именно мне нужно. В какой-то момент совпал мой накопленный опыт и предоставилась возможность его реализовать. Именно так я сделал монтаж сразу в двух квартирах. Это было стартом моей монтажной карьеры. Плавно я перешёл от работы в обслуживающих организациях на монтажи, а потом и на работу на себя. Поработав сам на себя я достиг определённого уровня монтажа и некоторого авторитета в монтажном мире Санкт-Петербурга. Начался какой-то определённый поток заказов, я понял что работать руками без перспективно, не хватает времени даже на то чтобы посмотреть новые объекты. Я делал очерендой монтаж и в этот момент подвернулась возможность взять ещё один крупный объект, я рискнул и это был мой первый опыт и первый объект который я не делал своими руками. Объект был сделан довольно успешно дизайнер остался доволен и мы с ним сотрудничаем по сей день.
Теперь я развиваюсь как руководитель, каждый день пытаюсь расширить возможности нашей команды, оптимизировать все процессы и выйти на новый уровень. Это краткий рассказ о моем пути в сантехнике.
Я вкратце расскажу о своём видении того, как нужно делать монтаж сантехники в современной квартире. Я всегда придерживаюсь принципа необходимо и достаточно. Это значит что я не стремлюсь использовать только премиальные бренды и материалы, там где можно обойтись более простыми материалами, обхожусь ими. Там где нужны премиальные материалы куда нет доступа например трубы, водорозетки и прочие фитинги я использую только лучшее, например трубы для разводки воды я использую только Rehau Stabil, на мой взгляд это лучшее, что есть на рынке России, а может быть и всего мира. В узел ввода я выбираю только ту арматуру и фитинги, которая хорошо себя зарекомендовала, не опираюсь на премиальность брэнда а только на качество работы и срок эксплуатации. По комплектации узла ввода я ставлю то, что необходимо для стабильной работы приборов и в тоже время не ставлю лишних деталей, которые занимают место и стоят каких-то денег. Сейчас мы стараемся собирать максимально стандартные узлы ввода, но там где это необходимо я всегда разрабатываю что-то новое по компоновке максимально подходящее к заданным параметрам, габаритам и техническим условиям. Таким образом иногда получается что-то не совсем стандартное.
Очень большую роль для меня играет аккуратность монтажа, надёжность системы, компактность там где это необходимо. Когда лично я монтирую водопровод я как бы рисую его, вывожу чёткие прямые линии трубами, делаю всё аккуратно, продумываю все детали. Этого же я требую от своих подчинённых.
Если вы дочитали до этого места, то скорее всего у вас есть какой-то интерес к сантехнике. Поэтому я чуть подробнее расскажу о комплектации средней квартиры.
КомплектацияПоскольку сердцем квартиры является узел ввода воды, а это один из самых сложных инженерных узлов в квартире, то именно про него я и расскажу.
Первое что есть на входе в квартиру это запорный кран, обычно он располагается на стоянке водоснабжения, но я всегда перепаиваю отводы и переношу краны в узел ввода, а не оставляю их у стояков хвс, гвс. Тем самым мы избавляемся от необходимости доступа к стоякам, что довольно удобно при эксплуатации.
2.Защита от протечек.
После крана я советую устанавливать защиту от протечки. Раньше я считал что это не самый нужный элемент и его можно не ставить. Да если руководствоваться тем, что прорыв во внутриквартирном водопроводе практически исключён, так как материалы использованы качественные и правильно смонтированы, то защита от протечек не нужна. Но если посмотреть на это с другой стороны всегда может случиться протечка по глупой случайности: не закрытый смеситель, прорыв гибкой подводки на смеситель, течь сифона ванной или умывальника, да в конце концов всегда может попасться бракованный фитинг или другая деталь. Защита от протечек стоит относительно недорого, ремонт в квартире и тем более у соседей стоит несоизмеримо дороже. Поэтому я пришел к тому что защита от протечек все же нужна, хотя бы для исключения непредвиденных ситуаций.
3.Фильтр грубой очистки.
Дальше после защиты от протечек устанавливается фильтр грубой очистки. Он не позволит крупной грязи, окалине и прочим примесям попасть из общедомовых сетей во внутриквартирный водопровод. Во многоквартирных современных домах крайне редко засоряются и требуют прочистки, но этот элемент обязателен для установки.
За фильтром в многоквартирных домах устанавливается редуктор давления. Для точного определения необходим ли в конкретном случае редуктор давления нужно произвести замер давления, если давление в общедомовых сетях холодной/горячей воды выше 3 кг, то я бы уже советовал ставить редукторы. Если в квартире от застройщика уже стоят редукторы, то их обязательно заменить на новые полнопроходные редукторы, которые хорошо себя зарекомендовали, например мембранный редуктор фар. Некоторые производители современной сантехники требуют установку редукторов в системе для обеспечения гарантийных обязательств, например в инструкции для встроенных смесители Grohe указано что установка редуктора обязательна.
После редуктора в квартире устанавливается счётчик воды, счётчики могут быть импульсные, что позволяет подключить их к системе умного дома и дистанционно снимать показания, так же к системе умного дома можно подключить и защиту от протечек и управлять дистанционно через приложение включением воды. И раз уж я затронул тему автоматизации то на данный момент также есть обвязки для ванн с функцией дистанционного управления набором воды, то есть условно вы приходите домой и к этому времени квартира встречает вас наполненной ванной с температурой воды, как вы любите. Также можно подключить к умному дому и управление системой отопления.
Вернёмся к узлу ввода после счётчика ставится обратный клапан, обратный клапан предотвращает обратное течение воды в стояк водоснабжения. Ситуации могут быть разные: отключения холодной или горячей воды, неправильно подключенный водогрей, гигиенический душ через эти приборы при разнице давления на холодной и горячей воде возможен подмес в общедомовые системы, а также вращение счётчика в обратную сторону. Отдельно после коллектора устанавливаются обратные клапаны на отводы гигиенического душа и на подачу воды в накопительные водонагреватели.
7.Кран для пожаротушения.
После обратного клапана я устанавливаю на холодной воде кран для пожаротушения кто-то считает что он нужен, кто-то что не нужен, но я все же склоняюсь к версии что он обязательно должен быть в любой квартире. Тем более, что они всегда есть от застройщика.
8.Магистральный фильтр (фильтр тонкой очистки).
Далее я устанавливаю магистральные фильтры, они позволяют очистить воду убрав примеси до пяти микрон, также в них можно устанавливать специфические картриджи для умягчения воды и так далее. Я ставлю только магистральные фильтры из нержавейки, пластиковые фильтры являются менее надёжными и при внештатных ситуациях могут лопнуть, тем самым создать аварийную ситуацию а нам это не нужно.
9.Кран для подсоса воздуха.
Когда устанавливаются магистральные фильтры, для удобной замены картриджей, необходимо предусмотреть слив воды с колбы, чтобы она не разливалась во время замены картриджа. Для того чтобы слить всю воду необходим кран для подсоса воздуха, он позволяет убрать разряжение воздуха которое мешает сливу воды. Этот кран нужно устанавливать со стороны подачи воды на магистральный фильтр. Если его установить со стороны выхода воды, то он не будет работать.
После магистральных фильтров я ставлю манометры. Ставлю их именно туда потому что по разнице давления в статике и динамике можно отследить степень загрязнения картриджа, но по идее манометра должно быть два до магистрального фильтра и после, но один манометр до фильтра я обычно не ставлю для упрощения системы.
Дальше ставятся коллекторы. Распределительные коллекторы позволяют отключать все приборы в одном месте, отключать приборы отдельно друг от друга, балансировать расход воды по приборам, в некоторой степени уменьшают взаимовлияние приборов друг на друга.
В конечной точке коллектора ставятся гасители гидроудара. Они выполняют две функции: непосредственно функцию гашения гидроудара, а также на холодной воде выполняют роль расширительного бака. Гидроудары компенсируются только те, которые возникают во внутри квартирном водопроводе, общедомовые гидроудары они не смогут компенсировать по своему размеру и производительности, для этого служит редуктор на входе в квартиру, а внутри квартиры гидроудары вполне распространённое явление, возникают они при резком закрытии потребителя. Практически вся современная техника может образовывать гидроудар будь то резкое закрытие керамического смесителя, клапана набора воды в унитаз, закрытие клапана посудомоечной или стиральной машины, все эти закрытия вызывают микро гидроудары, которые негативно сказываются на трубах и прочей арматуре. Также при разборе холодной воды система наполняется холодной водой, которая по СНиП должна быть температурой ниже 8 °C, а в ночное время когда водой никто не пользуется вода внутри системы нагревается до комнатной температуры, из-за этого она увеличивается в объёме, а так как на входе в квартиру стоят обратные клапаны они не дают воде уйти обратно в стояк, вследствие этого может возникнуть высокое избыточное давление, которое опасно как для трубопровода, так и для встроенных приборов. Гаситель гидроудара дает дополнительный объем куда может расширяться вода, тем самым повышает надёжность всей системы.
Ещё одно преимущество коллекторной системы в том, что от коллектора до прибора или водорозетки идёт целый отрезок трубы, учитывая что мы используем только качественные трубы возможность протечки исключается практически на 100%.
Ещё одним важным аспектом при монтаже сантехники являются отштукатуренные стены, так как это позволяет устанавливать водорозетки и всю встроенную технику (инсталляции для унитаза, биде, умывальника; встроенные смесители; встроенные сифоны) на необходимую глубину с учётом финишного покрытия, а также перпендикулярно плоскости чистовой стены.
Сейчас мы плавно переходим от монтажа сантехники к монтажу канализации. Канализация и водопровод связаны друг с другом расходом воды. Вся израсходованная вода должна успеть уйти в канализацию, не задерживаясь. Для этого необходимо правильно подобрать диаметр канализационных труб, а также обязательно рассчитать расход душевой системы и сопоставить производительностью трапа, производительность трапа должна быть выше чем расход воды душевой системы, тогда в душе не будет скапливаться вода и вы будете наслаждаться комфортом.
Нужно сопоставить расход воды и производительность трапа в душе.
Также наш опыт показывает что в некоторых случаях можно реализовать слив в пол (душевая зона в уровень с полом всей квартиры, без подиума) даже в многоквартирных домах, для этого необходимо понизить точку слива на стояке канализации, а также во время проектирования выбрать оптимальное место для положения трапа. Трап должен быть как можно ближе к стояку канализации. Понижение точки слива (опустить тройник канализации на квартиру)- это довольно сложная операция, но её можно выполнить даже без доступа к нижним соседям, но все же лучше когда доступ есть. Ещё понижение точки слива влияет на правильность установки инсталляции для подвесного унитаза и избавит вас от необходимости делать подиум под ванну.
Здесь душ будет без подиума.
Канализацию необходимо делать с уклоном требуемым СНиПом, но в некоторых случаях этот уклон можно сделать меньше, так как в СНиП уклоны указаны для старых чугунных труб, современные пластиковые трубы имеют более низкую степень трения, и более высокую пропускную способность, также европейские производители рекомендуют делать уклон меньше чем требует российский СНиП. Но только опытный специалист может оперировать степенью уклона и подобрать то значение которое не повлияет на работоспособность водоотведения.
Также немало внимания в современной квартире уделяется акустическому комфорту. Для этого могут применяться шумопоглощающие системы канализации, а также шумоизоляция стояков канализации. Отдельное внимание заслуживают системы крепления, раньше использовались фанерки палочки и что только не использовать для крепления встроенной техники сбора узла ввода, сейчас же существуют специальные монтажный шины, шиногибы, целые крепежные системы такие как Fischer, Mupro, Walraven которые позволяют решать множество возникающих задач выводя монтаж сантехники на совершенно иной уровень. Крепления получаются надёжными красивыми и долговечными. Также весьма распространены каркасные системы такие, как Tece Profil, Viega Steptec, Giberit Gis. Эти системы позволяют создать абсолютно разные пространства такие как отдельностоящие подиумы, стены, целые помещения, интегрировать в них встроенную технику, инсталляции, системы канализации и трубопроводов. В некотором роде эти системы являются заменой стандартных каркасов для гипсокартона из профилей, они являются более крепкими, в них предусмотрена интеграция приборов.
Также надо уделить внимание водогреям. Водонагреватели бывают двух типов проточные и накопительные.
Проточные водонагреватели позволяют комфортно пользоваться горячей водой во время отключения горячей воды, при этом горячая вода подготавливается моментально не требуя никаких ожиданий. Недостатком проточников является большое потребление электроэнергии для комфортного использования и не все квартиры имеют необходимую выделенную мощность. Проточные водонагреватели слабой мощности не могут выдать необходимое количество горячей воды для комфортного пользования душем, для набора ванны и других потребителей в которых большой расход воды.
Накопительные водонагреватели имеют два недостатка: большие габариты, так как для комфортного пользования в квартире необходим водогрей около 100 л, второй недостаток это ожидание нагрева горячей воды столь большого объема. Но водонагреватель любого типа, на мой взгляд, должен быть в каждой современной квартире.
Встроенный смеситель для гигиенического душа. Термостатический.
Отдельно можно сказать в двух словах про гигиенический душ. Сейчас они ставится практически во всех квартирах это удобный и нужный прибор. Сделать гигиенический душ можно в разных вариациях. На мой взгляд самый удобный вид генического душа это термостатический либо в черновом исполнении, где сам термостат стоит в том же месте где узел ввода, либо встроенный смеситель с термостатом, также может быть накладной смеситель, но он занимает слишком много места и не актуален.
Так же в последнее время мне стали попадаться такие приборы как пурифайеры, мультиварки, которые требуют подключения к холодной воде и канализации. Это обязательно нужно учитывать при проектировании водопровода и канализации.
Также к канализации подключаются стиральные, посудомоечные, сушильные машины, кондиционеры, накопительные водонагреватели для этого используеются встроенные сифоны, которые позволяют отсечь неприятный запах из канализации.