Работа в сэд это: Что такое СЭД — Диадок

Содержание

Что такое СЭД — Диадок

Системы электронного документооборота (СЭД) предназначены для организации внутреннего делопроизводства в компании или госучреждении. СЭД оптимизируют и облегчают самые трудоемкие бизнес-процессы. Рассказываем о возможностях, преимуществах и работе с такими системами.

Содержание

  • Что такое система электронного документооборота (СЭД)
  • История развития
  • Требования к системам электронного документооборота (СЭД)
  • Правовое регулирование и стандарты
  • Виды СЭД
  • Преимущества и недостатки СЭД
  • Технические возможности современных СЭД
  • Готовые решения для всех направлений
  • Внедрение и работа в СЭД
  • Популярные вопросы

Система электронного документооборота — это сервис, который позволяет организовать работу с электронными документами внутри компании. Он автоматизирует делопроизводство, ускоряет процессы, освобождает сотрудников от рутинных задач. СЭД закрывают все потребности делопроизводства компаний, а функциональность таких систем превышает возможности бумажного документооборота.

Так, в сервисах электронного документооборота:

  • налаживается работа с электронными документами на всех этапах их жизненного цикла;
  • поиск нужных файлов занимает минимум времени;
  • файлы надежно хранятся в едином архиве;
  • возможна настройка маршрутизации;
  • сокращается время на бумажную работу, корректировку, согласование, подписание документации;
  • взаимодействие между сотрудниками автоматизируется: обмениваться документами, выдавать и получать задания, отправлять уведомления можно в один клик;
  • действия с документами отмечаются и сохраняются в системе ― за счет этого делопроизводство становится контролируемым, а исполнительность сотрудников повышается.

Благодаря СЭД предприятия оптимизируют административные расходы на внутренний документооборот и хранение документации. При выстроенном безбумажном делопроизводстве процессы в компании ускоряются — документы быстрее проходят все согласования, решения принимаются оперативнее. Это не влияет на качество работы, напротив, использование СЭД делает компанию гибкой, способной адаптироваться к ситуации на рынке.

Примеры популярных СЭД:

  • МосЭДО. 
  • Интра.татар.ру. 
  • Практика. 
  • ТЕЗИС.
  • Корус.
  • Directum.
  • Docsvision.

Первые сервисы по автоматизации делопроизводства начали появляться в 1980-е годы. Этому способствовал рост объемов управленческой документации и территориальная разрозненность филиалов, из-за которой согласования проходили неделями, иногда месяцами.

Первые СЭД разрабатывались для отдельных предприятий с помощью внутренних ресурсов и отвечали конкретным запросам и регламентам. Масштабировать разработки или изменить их структуру было почти невозможно.

Позже, уже в середине 1990-х годов, стали возникать универсальные СЭД. Создавали их в два этапа: сперва разрабатывали унифицированное ядро, затем адаптировали процессы под нужды заказчика. Передовые системы интегрировались в структуру компаний, решения упрощали работу, повышали производительность. Работа в СЭД велась на регистрационных карточках. Сервисы позволяли:

  • регистрировать входящие и исходящие документы;
  • контролировать их исполнение;
  • подготавливать отчеты.

В начале 2000-х от примитивного перевода документов в электронный вид разработчики перешли к управлению документооборотом и его оптимизации. В информационных системах появилось понятие WorkFlow, простыми словами — управление потоком работ. В 2002–2003 годах были разработаны первые комплексные системы, объединяющие инструменты WorkFlow и электронных архивов.

Приход на рынок западных разработчиков ввел понятие ECM — управление информацией предприятия. В таких сервисах работа велась уже не только с документами, но и их метаданными, что позволяло одновременно решать разноплановые задачи организаций.

Последнее десятилетие развитие сервисов электронного документооборота касается их интерфейсов, удобства работы, автоматизации процессов. Разрабатываются мобильные приложения и облачные продукты.

Набор функций у систем электронного документооборота схожий. При выборе конкретного продукта следует учесть потребности, бизнес-задачи, технические цели, потенциал организации.

В делопроизводстве важны следующие базовые опции:

  • создание документов, их потоковое сканирование и распознавание, регистрация, согласование, подписание;
  • возможность комментирования, редактирования документов, в том числе коллективного;
  • создание резолюций, контроль исполнения;
  • протоколирование действий, создание отчетности;
  • поиск файлов в едином электронном архиве, классификация;
  • разграничение доступа.

К базовым требованиям к СЭД также относятся совместимость с ПО, наличие дружелюбного интерфейса, профессиональный уровень техподдержки и степени защиты данных, мощность сервиса.

Также важны следующие критерии:

  • применение электронной подписи;
  • надежность разработчика;
  • возможность автоматического выполнения стандартных функций или подготовки документов конкретного типа;
  • массовый ввод документов — востребован компаниями с большим документооборотом;
  • возможность интеграции с существующими информационными системами, почтовой программой, офисными приложениями;
  • соответствие отраслевым стандартам или стандартам организации;
  • количество времени на восстановление сервиса в случае сбоя;
  • необходимость установки дополнительных программ;
  • зрелость системы — чем дольше она на рынке, тем вероятнее, что она будет стабильно работать, соответствовать запросам пользователей, своевременно обновляться.

Играют роль возможность масштабирования СЭД, изменения настроек при расширении компании, наличие удаленного доступа и маршрутизации документов. Это важно при территориальной разрозненности подразделений и сложной организационной структуре. Некоторые разработчики предлагают не только коробочные СЭД, но и индивидуальные решения.

Кроме того, играет роль стоимость СЭД. Следует учесть не только цену покупки системы и лицензии, но и стоимость администрирования, обучения работников, техподдержки, других составляющих.

Внедрение электронного документооборота внутри компании предполагает изменение организации работы, ее оптимизацию, упрощение, ускорение. Для того чтобы бизнес-процессы протекали без сбоев и результативно, при переходе на СЭД важно учесть нормативно-правовую базу сферы безбумажного делопроизводства.

Вот основные законы и стандарты:

  • 63-ФЗ «Об электронной подписи», 149-ФЗ об «Об информации, информационных технологиях и о защите информации», 152-ФЗ «О персональных данных», 125-ФЗ «Об архивном деле в Российской Федерации», 98-ФЗ «О коммерческой тайне».
  • Постановления федерального, региональных правительств, например, Постановление Правительства РФ от 22.09.2009 № 754 «Об утверждении Положения о системе межведомственного электронного документооборота».
  • Приказы ведомств: Росстандарта, Росархива, Минюста, Минфина, в том числе Приказ Росархива «Об утверждении Перечня типовых управленческих архивных документов, образующихся в процессе деятельности государственных органов, органов местного самоуправления и организаций, с указанием сроков их хранения».
  • ГОСТы и стандарты, регулирующие сферу делопроизводства и архивного дела, в частности, ГОСТ Р 7.0.8.-2013, ГОСТ Р 6.30-2003, ГОСТ Р ИСО 15489-1-2007, ГОСТ Р 54471-2011/ISO/TR 15801:2009, ГОСТ Р 53898-2013 и другие.
  • Общероссийские классификаторы и ряд других документов. 

Деятельность разработчиков СЭД строго не регламентируется. Однако законодательно для всех участников процесса установлена административная и уголовная ответственность за неправомерный доступ к информации, разглашение государственной или коммерческой тайны.

Системы электронного документооборота отличаются рядом характеристик. Например, областью применения, интеграционными возможностями, набором опций. В зависимости от параметров выделяют СЭД:

  • Классические — предусматривают перевод в электронный вид всех документов и процессов.
  • Клиент-серверные — размещаются на выделенном сервере, за счет чего работают быстро и надежно. Чаще всего такая технология применяется в универсальных системах.
  • На основе баз данных — интегрированные с различными базами данных, где хранится информация, в том числе в больших объемах.
  • На основе веб-технологий — разработаны для функционирования при удаленном доступе к серверу, поэтому работают через браузер, не нуждаются в клиентских приложениях.
  • Облачные решения — работа ведется с помощью сервера провайдера.

Некоторые СЭД поддерживают конкретные виды документации, например, медицинскую, а также специализированные виды документооборота — кадровый, финансовый и т.д.

Кроме того, сервисы электронного документооборота бывают коробочными (готовые решения), индивидуально разработанными и комбинированными.

Рынок СЭД развивается — расширяется перечень систем и их возможностей, сферы применения, количество клиентов. Распространение таких сервисов объясняется их выгодой, удобством для бизнеса и госструктур.

В числе преимуществ:

  • сокращаются административные расходы на печать, бумагу;
  • меньше времени уходит на рутинные задачи — ввод документов, их обработка, согласование и другие действия происходят быстрее, чем при бумажном делопроизводстве, а персональные номера присваиваются автоматически;
  • обеспечивается прозрачность документооборота, поскольку действия по каждому документу можно отследить;
  • благодаря четкой постановке задач и контролю их исполнения повышается дисциплина труда;
  • надежное, долговременное и структурированное хранение файлов в электронном архиве — утери больше не страшны, а поиск займет секунды;
  • конфиденциальность данных — передача информации в СЭД защищена шифрованием, а доступ сотрудников к файлам разграничивается;
  • удаленная работа с помощью веб-версий систем и мобильных приложений;
  • инструменты для формирования отчетов;
  • сокращение числа ошибок за счет автоматического заполнения форм.

Выбор СЭД зависит от потребностей конкретных компаний. Но сервис так или иначе окажется полезным нововведением для всей организации, поскольку:

  • руководителю будет проще собирать и анализировать информацию, составлять отчеты, согласовывать документы, контролировать исполнение задач;
  • секретарь сэкономит время на рутинных делах — оформлении, регистрации документов;
  • бухгалтеры, экономисты получат в пользование единую структурированную базу данных.

Есть и неочевидные преимущества. Практика взаимодействия между сотрудниками показывает, что внедрение СЭД способствует развитию корпоративной культуры. Бумажной волокиты больше нет, история перемещений документов всем доступна, психологическая атмосфера в офисе становится все более благоприятной. Кроме того, СЭД позволяют оперативно доносить до работников новую информацию.

У систем электронного документооборота есть и свои недостатки. В частности, руководителей компаний смущают начальные траты на приобретение и внедрение СЭД, время на настройку и привыкание, последующее обслуживание. Однако часть этих минусов — временные явления, а остальные вопросы решаются в рабочем порядке. Начальные же затраты компенсирует последующая экономия.

Современные СЭД делают бизнес-процессы быстрыми, логично выстроенными, понятными. Поэтому даже к базовым сервисам предъявляются высокие требования.

Благодаря этому сегодняшние СЭД позволяют настроить:

  • связь с бумажным документооборотом и эффективное управление как документацией, так и стадиями ее движения в компании;
  • упорядоченный обмен информацией между всеми уровнями организации;
  • управление потоками — маршрутизацию документов, разграничение доступа, совместное пользование;
  • единое пространство для структурных подразделений и отделов;
  • надежную систему информационной безопасности.

Кроме того, сервисы электронного документооборота способны масштабироваться, подстраиваться под нужды компании, даже если выбраны коробочные решения. В них, как правило, доступно отслеживание актуальности данных и архивирование файлов. Среди направлений развития — управление контентом, автопроцессинг и другие.

Чаще всего в компаниях применяются коробочные решения. Это готовые продукты, внедрение которых в бизнес-процессы занимает минимум времени. Несмотря на единый для пользователей набор опций, они позволяют настроить полноценный документооборот.

Функции готовых решений СЭД:

  • получение, регистрация, обработка документов;
  • организация, структурированное хранение файлов в электронном архиве;
  • отслеживание действий с документами и сроков;
  • выставление задач сотрудникам и другое. 

С помощью таких СЭД можно наладить внутреннее делопроизводство в компании любого направления — на производстве, в электронной торговле, госучреждениях, магазинах, на складах. Тем более что многие системы можно адаптировать под конкретные нужды даже через стандартные настройки.

Внедрение систем электронного документооборота — это комплексный процесс. Он предполагает не только выбор, приобретение и установку программного обеспечения, но и перевод всех процессов в электронный формат, обучение сотрудников, шлифовку системы под конкретные задачи предприятия.

Обобщенный порядок действий при внедрении СЭД таков:

  • проанализируйте текущие бизнес-процессы в компании, изучите маршруты документов, регламенты и порядок работы с ними, учтите слабые места, чтобы оптимизировать эти процессы при электронном делопроизводстве;
  • выберите IT-решение, установите необходимое ПО, адаптируйте его или интегрируйте с имеющимися системами — сами или при помощи специалистов;
  • протестируйте и оцените СЭД, введите ее в опытную эксплуатацию;
  • обучите сотрудников работе с электронными документами.

Кроме того, важно внести изменения в учетную политику организации, а также издать положение и приказ о переходе на электронную документацию. В этих документах прописывают цели и задачи новшеств, термины и определения, устанавливают порядок доступа к сервису, правила работы с документами.

При начале работы в СЭД могут возникать сложности. Как правило, они связаны с человеческим фактором. Сотрудникам сложно перестроить работу, адаптироваться к изменениям производственных процессов. С этим можно справиться, если вовремя обучить работников, развеять их страхи и поддерживать в дальнейшем. Важную роль играет и активное участие руководства компании, его заинтересованность и оперативное решение организационных вопросов.

Можно ли совмещать ЭДО с бумажным?

Да, можно. Более того, в первое время это будет необходимо, поскольку прежние документы хранятся в бумажном виде.

Как расшифровывается СЭД?

СЭД — система электронного документооборота. Она автоматизирует бизнес-процессы в компании и организует эффективную, безопасную работу с электронными документами. СЭД сейчас — передовой стандарт в делопроизводстве организации.

Как выбрать СЭД, подходящую для вашего бизнеса?

Сперва проанализируйте процессы в компании. В соответствии с задачами, ресурсами и потребностями бизнеса определите ключевые требования к СЭД. Затем сравните предлагаемые решения, изучите их технические, организационные возможности, оцените стоимость установки и обслуживания системы.

Чем отличается СМЭВ от СЭД?

СЭД может быть внедрена на любом предприятии или в госучреждении. СМЭВ — система межведомственного электронного взаимодействия — предназначена для обмена данными между государственными органами и ведомствами.

Чем отличается НСУД от СЭД?

НСУД — это национальная система управления данными. После полноценного запуска она аккумулирует весь массив информации государственных структур и позволит систематизировать госсистемы, реестры и базы данных. СЭД же относится к конкретной организации.

Что такое система электронного документооборота (СЭД)?

Главный источник информации в любой организации — это документы, которые создаются и существуют в рамках бизнес-процессов. Контент появляется на разных стадиях работы: в начале (согласование договора, заявления на отпуск) или в конце (выдача справки, подготовка маркетингового материала). Если рутинные операции отнимают значительную часть времени, а найти ответственного и определить стадию выполнения процесса — целый квест, то это верные сигналы к внедрению системы электронного документооборота (СЭД).


Система электронного документооборота — это программное обеспечение для работы с электронными документами на всех стадиях их жизненного цикла: создание, редактирование, хранение. Современные системы поддерживают возможности маршрутизации документов и, конечно, такие базовые функции, как поиск, классификация и т.п. Документы и бизнес-процессы неразрывны, поэтому современные системы автоматизации должны включать набор инструментов для работы как в поле процессов, так и в поле информации.

Чем СЭД отличается от ECM-системы?

У российского рынка систем электронного документооборота есть ярко выраженная особенность — слияние понятий СЭД и ECM. Если используется формулировка «система электронного документооборота в организации», не исключено, что в это понятие вкладывается функциональность ECM-системы. На самом деле возможности ECM шире.

Основной элемент в работе СЭД — это документ, который в системе имеет две обязательные составляющие: информационную и реквизитную. В СЭД выполняются функции учета, регистрации и контроля над организационно-распорядительной деятельностью. По мере развития в системах электронного документооборота появлялись отдельные функции для работы с договорами, счетами, обращениями и пр.

Перечисленный спектр возможностей есть и в ECM, но глобальная цель при этом другая — этот класс систем позволяет сформировать единое информационное пространство компании. Если СЭД работает только со структурированными документами, то ECM — со всем корпоративным контентом (документы, медиафайлы, записи справочников, письма и т.д.). Более того, появляются полноценный механизм workflow и функция управления бизнес-процессами, возможности совместного редактирования документов и полноценное управление доступом к данным.

Современные системы электронного документооборота на российском рынке фактически являются ECM-системами, просто термин СЭД более привычен.

Преимущества использования системы электронного документооборота в организации

Как понять, что процессы в компании не эффективны? Очевидными маркерами являются большое количество просроченных задач, длительное согласование документов и частые случаи их утери, высокая загруженность руководства. Что меняется с использованием СЭД:

  • сокращаются трудозатраты: оптимизируется работа с контентом, это ускоряет все бизнес-процессы компании;
  • повышается исполнительская дисциплина: статистика сурова, и она говорит о том, что 20% всех заданий не выполняются. Система электронного документооборота позволяет руководителям контролировать все этапы работы;
  • бизнес-процессы становятся прозрачными: на любом из этапов задачи можно отследить ход ее исполнения и соблюдение сроков;
  • гарантируется сохранность и конфиденциальность информации: доступ к данным в системе регулируется специальными правами, а все действия над документами строго фиксируются. Это позволяет предотвратить утечку информации;
  • соблюдаются стандарты ISO 9000: система менеджмента качества в организации должна отвечать ряду требований, одно из них помогает выполнить именно СЭД — это обеспечение информационного взаимодействия и прозрачно поставленный документооборот в компании;
  • развивается корпоративная культура: взаимодействие сотрудников внутри компании упрощается, повышается ответственность за порученные задачи, а развитие горизонтальных связей укрепляет корпоративный дух в организации;
  • новые сотрудники быстрее адаптируются: система оповещения, которая реализована в СЭД, позволяет оперативно доносить до сотрудников новую информацию. Пользователи получают быстрый доступ к нужному контенту, благодаря чему адаптация и обучение проходит существенно быстрее;
  • повышается конкурентоспособность: ускорение документооборота и процессов приводит к повышению качества услуг и скорости обслуживания клиентов, что неизменно ведет к укреплению позиций среди конкурентов на рынке.

Еще одно преимущество СЭД — электронный архив. Он помогает компаниям сократить расходы на содержание бумажного архива, а также экономит время сотрудников при поиске и представлении нужных документов.

Эволюция систем электронного документооборота

Спрос на цифровизацию среди компаний растет с каждым годом, а вместе с ним меняется и структура современных СЭД. Большинство крупных организаций уже прошли этап оптимизации делопроизводства и документооборота. Теперь перед ними стоят другие задачи: снизить трудоемкость рутинных операций и перевести в цифру работу по новым направлениям, например, HR-процессы.

Классическая СЭД не сможет полноценно закрыть эти задачи. Поэтому в структуру современных систем электронного документооборота входят встроенные интеллектуальные сервисы. Они помогают снизить расход времени сотрудников на регулярные простые операции:

  • регистрацию входящих документов и запросов с занесением информации в систему;
  • сопоставление версий документа с отображением расхождений;
  • формирование проекта поручения на основе протокола или приказа.

Функционал классических СЭД и ECM в совокупности с интеллектуальными сервисами формирует новый современный класс систем, отвечающий запросам компаний из разных отраслей.

Елена Истомина, директор департамента консалтинга и внедрения компании Directum:

«Мы говорим уже в течение ряда лет о том, что границы классов систем стираются, и не стоит делить пальму первенства. Понятно, что концентрация функций и процессов преимущественно вокруг одной из информационных систем предприятия снижает общую стоимость владения ИТ-инфраструктурой. Обычно ядром цифрового ландшафта становится ERP, ECM или BPM-система. Какая конкретно — зависит от компании, ее бэкграунда, наличия ресурсов и функциональности.

Систему Directum RX мы вообще вывели за рамки определения ECM или BPM и позиционируем ее в более понятных клиентам терминах как интеллектуальную систему управления цифровыми процессами и документами. И развиваем так, чтобы предоставить клиенту готовую основу для цельной экосистемы предприятия».

Система электронного документооборота в организации

Компания Directum представляет интеллектуальную систему управления цифровыми процессами и документами Directum RX. Помимо функционала СЭД Directum RX включает набор готовых бизнес-решений для цифровизации разных направлений деятельности бизнеса.

Ежегодно интернет-портал и аналитическое агентство TAdviser готовит рейтинг самых популярных СЭД/ECM-систем в России. В 2020 году лидерство в нем заняла система Directum, существенно обогнав других претендентов на победу по количеству реализованных проектов.

Узнайте все преимущества интеллектуальной системы управления цифровыми процессами и документами Directum RX.

Использование редактора sed в Linux

    Сожалеем. Мы не смогли найти совпадение по вашему запросу.

    Мы предлагаем вам попробовать следующее, чтобы найти то, что вы ищете:

    • Проверьте правильность написания вашего ключевого слова.
    • Используйте синонимы для введенного вами ключевого слова, например, попробуйте «приложение» вместо «программное обеспечение».
    • Начать новый поиск.

    Связаться с отделом продаж

    Меню
    Меню

    Редактор sed является одним из самых полезных инструментов в наборе инструментов системного администратора Linux.
    поэтому стоит тщательно разобраться в его приложениях
    Автор: Эммет Дулани

    Одна из лучших особенностей операционной системы Linux заключается в том, что она переполнена утилитами. На самом деле существует так много различных утилит, что почти невозможно знать и понимать их все. Одной из утилит, способных упростить жизнь в ключевых ситуациях, является sed. Это один из самых мощных инструментов в наборе инструментов любого администратора, который может оказаться бесценным в критических ситуациях.

    Утилита sed является «редактором», но отличается от большинства других. Помимо того, что он не ориентирован на экран, он также не интерактивен. Это означает, что вы должны вставить команды, которые будут выполняться над данными в командной строке или в сценарии, который будет обработан. Когда вы визуализируете его, забудьте о любой возможности интерактивного редактирования файлов, как в Microsoft Word или большинстве других редакторов. sed принимает ряд команд и выполняет их в файле (или наборе файлов) неинтерактивно и беспрекословно. Таким образом, он течет через текст, как вода через поток, и, таким образом, sed подходит для потокового редактора. Его можно использовать для замены всех вхождений «мистер Смит» на «мистер Смит» или «тигренок» на «волчонок». Редактор потока идеально подходит для выполнения повторяющихся правок, которые заняли бы значительное время, если бы выполнялись вручную. Параметры могут быть настолько ограниченными, насколько это необходимо для одноразового использования простой операции, или настолько сложными, как файл сценария, заполненный тысячами строк редактирования, которые необходимо внести. С очень небольшим аргументом sed является одним из самых полезных инструментов в наборе инструментов Linux и UNIX.

    Как работает sed

    Утилита sed работает путем последовательного чтения файла, строка за строкой, в память. Затем он выполняет все действия, указанные для строки, и помещает строку обратно в память для дампа на терминал с внесенными запрошенными изменениями. После того, как все действия выполнены с этой строкой, она читает следующую строку файла и повторяет процесс, пока не закончит работу с файлом. Как уже упоминалось, вывод по умолчанию должен отображать содержимое каждой строки на экране. Здесь играют роль два важных фактора: во-первых, вывод может быть перенаправлен в другой файл для сохранения изменений; во-вторых, исходный файл по умолчанию остается без изменений. По умолчанию sed читает весь файл и вносит изменения в каждую его строку. Однако при необходимости его можно ограничить определенными строками.

    Синтаксис утилиты:

    sed [опции] '{команда}' [имя файла]

    В этой статье мы рассмотрим наиболее часто используемые команды и опции и проиллюстрируем, как они работают и где они будут пригодны для использования.

    Команда замены

    Одно из наиболее распространенных применений утилиты sed и любого подобного редактора — замена одного значения другим. Для этого используется следующий синтаксис командной части операции:

    's/{старое значение}/{новое значение}/'

    Таким образом, следующий пример очень просто иллюстрирует, как «тигр» может быть заменен на «волк»:

     
     $ echo Тигрята встретятся во вторник после школы | сед
     'с/тигр/волк/'
     Волчата встретятся во вторник после школы
     $
     
      

    Обратите внимание, что нет необходимости указывать имя файла, если входные данные получаются из выходных данных предыдущей команды – так же, как и для awk, sort и большинства других служебных программ командной строки Linux\UNIX.

    Множественные изменения

    Если необходимо внести несколько изменений в один и тот же файл или строку, это можно сделать тремя способами. Первый заключается в использовании параметра «-e», который информирует программу о том, что используется более одной команды редактирования. Например:

     $ echo Тигрята встретятся во вторник после школы | сэд -е '
     s/тигр/волк/' -e 's/после/до/'
     Волчата встретятся во вторник перед школой
     $
     
      

    Это довольно долгий путь, и опция «-e» обычно не используется в достаточной степени. Более предпочтительным способом является разделение команды точкой с запятой:

     $ echo Тигрята встретятся во вторник после школы | сед '
     с/тигр/волк/; с/после/до/'
     Волчата встретятся во вторник перед школой
     $
      

    Обратите внимание, что точка с запятой должна быть следующим символом после косой черты. Если между ними есть пробел, операция не будет успешно завершена и будет возвращено сообщение об ошибке. Эти два метода хороши, но есть еще один метод, который предпочитают многие администраторы. Важно отметить, что все, что находится между двумя апострофами (‘ ‘), интерпретируется как команды sed. Программа оболочки, читающая команды, не будет считать, что вы закончили ввод, пока не будет введен второй апостроф. Это означает, что команду можно вводить в нескольких строках — при этом Linux меняет подсказку с PS1 на подсказку продолжения (обычно «>») — до тех пор, пока не будет введен второй апостроф. Как только он будет введен и нажат Enter, начнется обработка и будут сгенерированы те же результаты, как показано ниже:

     $ echo Тигрята встретятся во вторник после школы | сед '
     > с/тигр/волк/
    > с/после/до/'
     Волчата встретятся во вторник перед школой
     $
      

    Глобальные изменения

    Начнем с обманчиво простого редактирования. Предположим, что сообщение, которое нужно изменить, содержит более одного экземпляра элемента, который нужно изменить. По умолчанию результат может отличаться от ожидаемого, как показано ниже:

     $ echo Тигрята встретятся во вторник в одно и то же время
     как встреча в прошлый вторник | sed 's/вторник/четверг/'
     Тигрята встретятся в этот четверг в одно и то же время
     как встреча в прошлый вторник
     $
      

    Вместо того, чтобы заменять каждое вхождение «Вторник» на «Четверг», редактор sed переходит после обнаружения изменения и его внесения, не читая всю строку. Большинство команд sed функционируют как подстановочные, то есть все они работают для первого вхождения выбранной последовательности в каждой строке. Чтобы каждое вхождение было заменено, в случае, если в одной строке появляется более одного вхождения, необходимо указать, чтобы действие выполнялось глобально:

     $ echo Тигрята встретятся во вторник в одно и то же время
     как встреча в прошлый вторник | sed 's/вторник/четверг/g'
     Тигрята встретятся в этот четверг в одно и то же время
     как встреча в прошлый четверг
     $
      

    Имейте в виду, что потребность в глобализации актуальна независимо от того, состоит ли искомая последовательность из одного символа или фразы.

    sed также можно использовать для изменения разделителей полей записи с одного на другой. Например, следующее изменит все табуляции на пробелы:

    sed 's/ / /g'

    , где запись между первым набором косых черт — это табуляция, а запись между вторым набором — пробел. Как правило, sed можно использовать для замены любого печатного символа на любой другой печатный символ. Если вы хотите заменить непечатаемые символы на печатные, например, колокольчик к слову «звонок» — sed — неподходящий инструмент для этой работы (но tr вполне подойдет).

    Иногда вам не нужно изменять каждое вхождение в файле. Иногда вы хотите внести изменения только в том случае, если выполняются определенные условия, например, после совпадения некоторых других данных. Для иллюстрации рассмотрим следующий текстовый файл:

     
     $ кошка sample_one
     один 1
     два 1
     три 1
     один 1
     два 1
     два 1
     три 1
      

    Предположим, что желательно заменить «1» на «2», но только после слова «два», а не во всей строке. Этого можно добиться, указав, что совпадение должно быть найдено перед вводом команды замены:

     $ sed '/two/s/1/2/' sample_one
     один 1
     два 2
     три 1
     один 1
     два 2
     два 2
     три 1
     $
      

    А теперь еще точнее:

     
     $ сед '
    > /два/ с/1/2/
    > /три/с/1/3/' образец_один
     один 1
     два 2
     три 3
     один 1
     два 2
     два 2
     три 3
     $
     
      

    Еще раз помните, что изменилось только отображение. Если вы посмотрите на исходный файл, он такой же, как и всегда. Вы должны сохранить вывод в другой файл, чтобы обеспечить постоянство. Стоит повторить, что тот факт, что изменения не вносятся в исходный файл, является истинным скрытым благословением: он позволяет вам экспериментировать с файлом, не причиняя реального вреда, пока вы не получите нужные команды, работающие именно так, как вы ожидаете и хотите. их к.

    Следующее сохраняет измененный вывод в новый файл:

     $ сед '
    > /два/ с/1/2/
    > /три/с/1/3/' образец_один > образец_два
     
      

    В выходной файл включены все изменения, которые обычно отображаются на экране. Теперь его можно просмотреть с помощью head, cat или любой другой подобной утилиты.

    Файлы сценариев

    Инструмент sed позволяет создавать файл сценария, содержащий команды, которые обрабатываются из файла, а не из командной строки, и на который можно ссылаться с помощью параметра «-f». Создавая файл сценария, вы можете выполнять одни и те же операции снова и снова и указывать гораздо более подробные операции, чем те, которые вы хотели бы каждый раз выполнять из командной строки.

    Рассмотрим следующий файл сценария:

     $ кошка список
     /два/ с/1/2/
     /три/ с/1/3/
     $
     
      

    Теперь его можно использовать в файле данных для получения тех же результатов, которые мы видели ранее:

     $ sed -f sedlist sample_one
     один 1
     два 2
     три 3
     один 1
     два 2
     два 2
     три 3
     $
      

    Обратите внимание, что апострофы не используются внутри исходного файла или в командной строке при вызове параметра «-f». Файлы сценариев, также известные как исходные файлы, бесценны для операций, которые вы намерены повторять более одного раза, и для сложных команд, где есть вероятность, что вы можете допустить ошибку в командной строке. Гораздо проще отредактировать исходный файл и изменить один символ, чем повторно набирать многострочную запись в командной строке.

    Ограничение строк

    По умолчанию редактор просматривает и редактирует каждую строку, которая вводится в потоковый редактор. Это можно изменить, указав ограничения перед командой. Например, чтобы заменить «1» на «2» только в пятой и шестой строках вывода файла примера, команда будет выглядеть так:

    . 
     
     $ sed '5,6 с/1/2/' sample_one
     один 1
     два 1
     три 1
     один 1
     два 2
     два 2
     три 1
     $
     
      

    В данном случае, поскольку строки для изменений были специально указаны, команда замены не понадобилась. Таким образом, у вас есть возможность выбирать строки для изменений (по сути, ограничивая изменения) на основе критериев соответствия, которые могут быть либо номерами строк, либо совпадающим шаблоном.

    Запрет отображения

    По умолчанию sed отображает на экране (или в файле, если так перенаправлено) каждую строку из исходного файла, независимо от того, затронута она операцией редактирования или нет; параметр «-n» переопределяет это действие. «-n» переопределяет всю печать и не отображает вообще никаких строк, независимо от того, были они изменены при редактировании или нет. Например:

     $ sed -n -f sedlist sample_one
     $
     
     $ sed -n -f sedlist образец_один > образец_два
     $ кошка sample_two
     $
      

    В первом примере на экране ничего не отображается. Во втором примере ничего не меняется, и поэтому в новый файл ничего не записывается — он оказывается пустым. Разве это не сводит на нет всю цель редактирования? Почему это полезно? Это полезно только потому, что параметр «-n» может быть переопределен командой печати (-p). Для иллюстрации предположим, что файл сценария был изменен и теперь выглядит следующим образом:

     $ кошка список
     /два/ с/1/2/п
     /три/ с/1/3/п
     $
     
      

    Результат запуска:

     
     $ sed -n -f sedlist sample_one
     два 2
     три 3
     два 2
     два 2
     три 3
     $
     
      

    Линии, которые остались прежними, вообще не отображаются. Отображаются только строки, затронутые редактированием. Таким образом можно вытащить только эти строки, внести изменения и поместить их в отдельный файл:

     $ sed -n -f sedlist образец_один > образец_два
     $
     
     $ кошка sample_two
     два 2
     три 3
     два 2
     два 2
     три 3
     $
     
      

    Другой способ использования этого — напечатать только заданное количество строк. Например, чтобы напечатать только строки со второй по шестую без внесения других изменений редактирования:

     
     $ sed -n '2,6p' sample_one
     два 1
     три 1
     один 1
     два 1
     два 1
     $
     
      

    Все остальные строки игнорируются, и в качестве вывода печатаются только строки со второй по шестую. Это то замечательное, что вы не можете легко сделать с любой другой утилитой. head напечатает верхнюю часть файла, а tail напечатает нижнюю часть, но sed позволяет вам извлекать все, что вы хотите, из любого места.

    Удаление строк

    Замена одного значения другим — далеко не единственная функция, которую можно выполнить с помощью потокового редактора. Возможностей гораздо больше, и второй по частоте использования функцией, на мой взгляд, является удаление. Удалить работает так же, как замена, только удаляет указанные строки (если вы хотите удалить слово, а не строку, не думайте об удалении, а думайте о том, чтобы заменить ее ничем s/cat// ).

    Синтаксис команды:

    '{что найти} d'

    Чтобы удалить все строки, содержащие «два», из файла sample_one:

     $ sed '/two/ d' sample_one
     один 1
     три 1
     один 1
     три 1
     $
      

    Чтобы удалить первые три строки с дисплея, независимо от того, что они собой представляют:

     $ sed '1,3 d' sample_one
     один 1
     два 1
     два 1
     три 1
     $
      

    Отображаются только оставшиеся строки, а первые три перестают отображаться на дисплее. Есть несколько вещей, о которых следует помнить при работе с потоковым редактором, поскольку они относятся к глобальным выражениям в целом и к удалениям в частности: 9$/ d’ {имя файла}

    Добавление и вставка текста

    Текст может быть добавлен в конец файла с помощью sed с параметром «a». Это делается следующим образом:

     $ sed '$ а \
    > На этом мы остановимся\
    >тест 'sample_one
     один 1
     два 1
     три 1
     один 1
     два 1
     два 1
     три 1
     Здесь мы останавливаемся
     тест
     $
      

    Внутри команды знак доллара ($) означает, что текст должен быть добавлен в конец файла. Обратная косая черта (\) необходима для обозначения того, что идет возврат каретки. Если их не указать, появится сообщение об ошибке, сообщающее, что команда искажена; везде, где должен быть введен возврат каретки, вы должны использовать обратную косую черту.

    Чтобы добавить строки в четвертую и пятую позиции, а не в конец, команда принимает следующий вид:

     $ сед '3а\
    > На этом мы остановимся\
    > тест 'sample_one
     один 1
     два 1
     три 1
     Здесь мы останавливаемся
     тест
     один 1
     два 1
     два 1
     три 1
     $
      

    Добавляет текст после третьей строки. Как и почти в любом редакторе, вы можете вставить, а не добавить, если хотите. Разница между ними заключается в том, что добавление следует за указанной строкой, а вставка начинается с указанной строки. При использовании вставки вместо добавления просто замените «a» на «i», как показано ниже:

     $ sed '3i\
    > На этом мы остановимся\
    > тест 'sample_one
     один 1
     два 1
     Здесь мы останавливаемся
     тест
     три 1
     один 1
     два 1
     два 1
     три 1
     $
      

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

    Чтение и запись файлов

    Возможность перенаправления вывода уже была проиллюстрирована, но необходимо отметить, что файлы можно считывать и записывать одновременно во время работы команд редактирования. Например, чтобы выполнить подстановку и записать строки между первой и третьей в файл с именем sample_three:

     $ сед '
    > /два/ с/1/2/
    > /три/с/1/3/
    > 1,3 Вт образец_три' образец_один
     один 1
     два 2
     три 3
     один 1
     два 2
     два 2
     три 3
     $
     
     $ кошка sample_three
     один 1
     два 2
     три 3
     $
      

    В новый файл записываются только указанные строки благодаря спецификации «1,3», данной команде w (запись). Независимо от того, что написано, все строки отображаются в выводе по умолчанию.

    Команда изменения

    Помимо подстановки записей, можно изменить строки с одного значения на другое. Следует иметь в виду, что замещение работает на посимвольной основе, в то время как изменение действует подобно удалению в том смысле, что оно влияет на всю строку:

     
     $ sed '/два/ с\
    > Мы больше не используем два 'sample_one
     один 1
     Мы больше не используем два
     три 1
     один 1
     Мы больше не используем два
     Мы больше не используем два
     три 1
     $
     
      

    Работая подобно замене, команда изменения имеет больший масштаб — полностью заменяет одну запись другой, независимо от содержания символов или контекста. Рискуя преувеличить очевидное, при использовании замены заменялся только символ «1» на «2», а при использовании замены изменялась вся исходная строка. В обеих ситуациях совпадение, которое нужно искать, было просто «два».

    Изменить Все, кроме…

    В большинстве команд sed функции прописаны в отношении того, какие изменения должны произойти. Используя восклицательный знак, можно сделать так, чтобы изменения происходили везде, кроме тех, которые указаны — полностью отменяя операцию по умолчанию.

    Например, чтобы удалить все строки, содержащие фразу «два», выполните следующую операцию:

     
     $ sed '/two/ d' sample_one
     один 1
     три 1
     один 1
     три 1
     $
     
      

    И чтобы удалить все строки, кроме тех, которые содержат фразу «два», синтаксис будет таким:

     
     $ sed '/two/ !d' sample_one
     два 1
     два 1
     два 1
     $
     
      

    Если у вас есть файл, содержащий список элементов, и вы хотите выполнить операцию над каждым из элементов в файле, то важно сначала провести интеллектуальное сканирование этих записей и подумать о том, что вы делаете. Чтобы упростить задачу, вы можете сделать это, комбинируя sed с любой процедурой итерации (для, пока, до).

    В качестве примера предположим, что у вас есть текстовый файл с именем «животные» со следующими записями:

    свинья
    лошадь
    слон
    корова
    собака
    кошка

    И вы хотите запустить следующую процедуру:

     
     #mcd. ksh
     для я в $*
     делать
     эхо У старого Макдональдса был $1
     эхо Э-И, Э-И-О
     Выполнено
     
      

    В результате каждая строка будет напечатана в конце фразы «У старого Макдональдса есть». Хотя это правильно для большинства записей, это грамматически неверно для записи «слон», так как результатом должно быть «слон», а не «слон». Используя sed, вы можете сканировать вывод вашего файла оболочки на наличие таких грамматических ошибок и исправлять их на лету, предварительно создав файл команд:

     #подсписок
     / а а / с / а / ан /
     / а э / с / а / ан /
     / а я / с / а / ан /
     / а о / с / а / ан /
     / а у / с / а / ан /
     
      

    , а затем выполните следующий процесс:

    $ sh mcd.ksh 'кошачьи животные' | sed -f sublist

    Теперь, после запуска сценария mcd, sed будет сканировать вывод в поисках любого места, где за одиночной буквой а (пробел, «а» пробел) следует гласная. Если такой существует, он изменит последовательность на пробел, «an,» пробел. Это устраняет проблему еще до того, как она появится на экране, и гарантирует, что редакторы повсюду будут спать спокойно по ночам. Результат:

    У старого Макдональдса была свинья
    Э-И, Э-И-О
    У старого Макдональда была лошадь
    Э-И, Э-И-О
    У старого Макдональда был слон
    Э-И, Э-И-О
    У старого Макдональда была корова
    Э-И, Э-И-О
    У старого Макдональда была собака
    Э-И, Э-И-О
    У старого Макдональда был кот
    E-I, E-I-O

    Ранний выход

    По умолчанию sed читает весь файл и останавливается только при достижении конца. Однако вы можете остановить обработку раньше, используя команду quit. Можно указать только одну команду quit, и обработка будет продолжаться до тех пор, пока не будет выполнено условие, вызывающее команду quit.

    Например, чтобы выполнить замену только первых пяти строк файла и затем выйти:

     $ сед '
    > /два/ с/1/2/
    > /три/с/1/3/
    > 5q 'sample_one
     один 1
     два 2
     три 3
     один 1
     два 2
     $
     
      

    Запись, предшествующая команде quit, может быть номером строки, как показано, или командой поиска/сопоставления, подобной следующей:

     $ сед '
    > /два/ с/1/2/
    > /три/с/1/3/
    > /three/q' sample_one
     один 1
     два 2
     три 3
     $
      

    Вы также можете использовать команду quit для просмотра строк сверх стандартного числа и добавления функциональности, превышающей те, что в голове. Например, команда head позволяет вам указать, сколько первых строк файла вы хотите просмотреть — число по умолчанию — десять, но можно использовать любое число от одной до девяноста девяти. Если вы хотите увидеть первые 110 строк файла, вы не можете сделать это с помощью head, но можете с помощью sed:

    sed 110q имя файла

    Решение проблем

    При работе с sed главное помнить, как он работает. Он работает, считывая одну строку, выполняя все известные ему задачи в этой строке, а затем переходя к следующей строке. Каждая строка подвергается каждой заданной команде редактирования.

    Это может быть проблематично, если порядок ваших действий не продуман до конца. Например, предположим, что вам нужно изменить все записи «два» на «три» и все «три» на «четыре»:

     
     $ сед '
    > /два/ с/два/три/
    > /три/с/три/четыре/' образец_один
     один 1
     четыре 1
     четыре 1
     один 1
     четыре 1
     четыре 1
     четыре 1
     $
      

    Самое первое чтение «два» было изменено на «три». Затем он соответствует критериям, установленным для следующего редактирования, и становится «четырем». Конечный результат не тот, что хотелось бы — теперь нет записей, кроме «четырех», где должны быть «три» и «четыре».

    При выполнении такой операции вы должны обратить пристальное внимание на то, как указаны операции, и расположить их в порядке, в котором одна не забивает другую. Например:

     $ сед '
    > /три/ с/три/четыре/
    > /два/с/два/три/' образец_один
     один 1
     три 1
     четыре 1
     один 1
     три 1
     три 1
     четыре 1
     $
      

    Это работает отлично, поскольку значение «три» изменяется до того, как «два» становится «три».

    Метки и комментарии

    Метки могут быть помещены в файлы сценариев sed, чтобы упростить объяснение того, что происходит, когда файлы начинают увеличиваться в размере. Существует множество команд, относящихся к этим меткам, и они включают в себя:

    1. : Двоеточие означает имя метки. Например:

    :HERE

    2. Метки, начинающиеся с двоеточия, могут быть адресованы командами «b» и «t».

    Дальнейшие действия

    Посетите и добавьте в закладки

    Технологический центр Linux

    Прочтите книгу Дейла Догерти и Арнольда Роббинса sed & awk, 2-е издание (O’Reilly and Associates).

    • 3. b {метка} Работает как инструкция «goto», отправляя обработку на метку, перед которой стоит кулон. Например,

      б ЗДЕСЬ

      4. отправляет обработку на строку

      : ЗДЕСЬ

      5. Если метка, соответствующая b, не указана, обработка идет до конца файла скрипта.

    • 6. t {метка} Переход к метке только в том случае, если после последней строки ввода или выполнения команды «t» были сделаны замены. Как и в случае «b», если имя метки не задано, обработка перемещается в конец файла сценария.
    • 7. # Знак решетки в качестве первого символа строки приводит к тому, что вся строка рассматривается как комментарий. Строки комментариев отличаются от меток и не могут быть разветвлены с помощью команд b или t.

    Дальнейшие исследования

    Утилита sed — один из самых мощных и гибких инструментов, которыми располагает администратор Linux. В то время как эта статья охватила много вопросов, она лишь коснулась поверхности этого универсального инструмента. Для получения дополнительной информации одним из лучших источников является книга Дейла Догерти и Арнульда Роббинса sed & awk , теперь уже во втором издании от O’Reilly and Associates (см. «Следующие шаги»). Тот же издатель также выпускает карманный справочник, который вы можете носить с собой.

    Эммет Дулани ([email protected]) получил 18 сертификатов поставщиков. Эмметт написал несколько книг по Linux, UNIX и сертификационным исследованиям, выступал на ряде конференций и является бывшим партнером Mercury Technical Sulutions.

    Почему Oracle

    • Аналитические отчеты
    • Лучшая облачная ERP
    • Облачная экономика
    • Корпоративная ответственность
    • Разнообразие и инклюзивность
    • Методы обеспечения безопасности

    Узнать

    • Что такое облачные вычисления?
    • Что такое CRM?
    • Что такое докер?
    • Что такое Кубернет?
    • Что такое Python?
    • Что такое SaaS?

    Что нового

    • Новости
    • Oracle CloudWorld
    • Oracle поддерживает Украину
    • Оракул Ред Булл Гонки
    • Устойчивое развитие Oracle
    • Платформа взаимодействия с сотрудниками
      • Facebook
      • Твиттер
      • LinkedIn
      • Ютуб

      Использование sed для поиска и замены

      Вам необходима возможность поиска и управления текстом в командной строке, особенно при выполнении повторяющихся задач. Именно это делает sed или s tream ed itor такими ценными. sed — это инструмент командной строки для обработки и манипулирования текстом Unix. Редактор потока берет текст из входного потока и преобразует его в указанный вывод в соответствии с инструкциями. Входной поток может быть из конвейеров или файлов.

      sed читает вводимый текст из файлов или стандартного ввода, затем редактирует текст построчно в соответствии с предоставленными условиями и командами. После того, как sed выполняет указанную операцию в каждой строке, он выводит обработанный текст на стандартный вывод или в файл, а затем переходит к следующей строке.

      Почему

      sed ?

      Использование sed имеет свои преимущества. Так как он не интерактивный и не требует много времени на процесс редактирования, работает быстро. Чтобы получить вывод, вы просто вводите команды и условия, а затем запускаете их. sed предлагает обширный набор надежных команд и других функций, включая адреса для точного нацеливания на редактирование, резервное копирование и обработку внешних сценариев, которые значительно упрощают редактирование текста.

      sed также легко доступен из командной строки, поэтому он полезен для обычных задач, таких как поиск и фильтрация текстовых файлов и потоков. Он достаточно гибок, чтобы работать с другими инструментами CLI, используя конвейеры. И это эффективно, поскольку вам нужно запустить его только один раз для обработки файла по сравнению с другими инструментами обработки текста на основе графического интерфейса.

      sed имеет множество вариантов использования. Это мощный инструмент для задач обработки текста, таких как фильтрация, поиск и замена, и он хорошо работает в ситуациях, когда требуется высокая точность. С помощью sed вы можете ориентироваться на часть входного текста, используя адреса строк и регулярные выражения. Это также отлично подходит для автоматизированных процессов сборки. sed Команды и условия могут быть предоставлены в файле сценария или через аргументы команды CLI, а затем выполняться автоматически.

      Наконец, это подходит для случаев использования, в которых текст предоставляется в качестве входного потока из других инструментов CLI, которым может потребоваться прочитать выходной поток, возвращаемый sed .

      В этой статье вы узнаете больше о том, как этот мощный инструмент может вам помочь, от простых команд поиска и замены до более сложных вариантов использования.

      Примечание для пользователей

      macOS

      sed в macOS — это BSD sed . Эта версия sed имеет некоторые отличия от GNU 9.0033 sed в дистрибутивах Linux. Вы можете узнать больше о различиях между двумя версиями в этой разбивке.

      Это руководство было создано с использованием GNU sed v4. 7 в Ubuntu 20.04. Чтобы продолжить, вам нужно будет установить GNU sed на свой Mac с помощью brew. Вы можете сделать это, выполнив следующее:

       варить установить gnu-sed 

      GNU sed теперь будет доступен как gsed в вашей командной строке после установки. Вы можете заменить все вхождения sed в этом уроке с gsed . Если вы хотите, чтобы команда sed вместо этого указывала на gsed , следуйте этим инструкциям, чтобы добавить ее в свой путь.

      Как

      sed Работает

      Ниже приводится краткое описание команды CLI sed:

       sed [ОПЦИЯ]... {скрипт} [входной файл]... 

      sed вызывается с помощью команды sed . Последующие параметры являются флагами, указывающими, например, как должен запускаться редактор или как должны приниматься сценарии. Предоставление Опция --debug указывает, что sed следует запускать в режиме отладки, где его выполнение аннотируется. Если указаны флаги --silent , --quiet или -n , sed подавляет печать вывода.

      Сценарий представляет собой набор команд, адресов и регулярных выражений. Команда — это инструкция, определяющая, какая операция должна быть выполнена: p печатает текст, a добавляет текст, i вставляет текст, c изменяет текст, а d удаляет текст.

      В адресе указано, какие строки входного текста следует использовать для команд. Вы можете указать командам работать с определенными строками или с их диапазоном. Команды будут выполнять операции редактирования только для строк, указанных в адресе, и не будут обрабатывать строки, которые не указаны. Если адрес не указан, команда будет применена ко всем строкам текста. Адреса могут быть числами, кратными или регулярными выражениями. Обычно они ставятся перед командой.

      Следующая команда, например, напечатает третью строку , которая является третьей строкой текста. 3 перед командой p является адресом. Вот команда:

       $ echo "первая строка
      вторая линия
      третья строка" |\
      sed -n 3p 
      третья строка 

      Обратите внимание, что sed считает строки, начинающиеся с 1, а не с 0, как это принято во многих языках программирования.

      Возьмем следующий пример:

       echo "первая строка
      вторая линия
      третья линия
      четвертая строка
      пятая строка" |\
      sed -n 1,+2p 
      первая строка
      вторая линия
      третья строка 

      Адрес 1,+2 указывает, что sed должен начать выполнение операции печати в строке 1 и продолжить до следующих двух строк, а затем остановиться.

      Входной файл

      Входной файл содержит текст, который вы хотите обработать. Выполнение следующей команды прочитает содержимое файла sample.txt и распечатает его:

       $ echo "Это образец текста.
      Это еще одна строка образца текста." > sample.txt && sed -n p sample.txt 

      sed работает, обрабатывая текстовый файл или входной поток построчно в циклах; каждый цикл соответствует обработке одной строки. sed читает строку и помещает ее во внутренний буфер, называемый пространством шаблонов. В соответствии с указанными командами sed обрабатывает текст в пространстве шаблонов. Он выводит обработанный текст строки на стандартный вывод, и цикл начинается заново.

      Пространство шаблонов не сохраняет текст из ранее обработанных строк, но для некоторых команд sed могут потребоваться такие функции. Для этой цели sed использует другой буфер, называемый пространством хранения. Он содержит текст и может накапливать больше между циклами sed.

      Найти и заменить на

      sed

      Чтобы найти и заменить слова во входном тексте на sed, используйте команду s . Он принимает следующую форму:

       s/regexp/replacement/ 

      s принимает регулярное выражение ( regexp ) и ищет в тексте любые совпадения. Как только совпадение найдено, он заменяет соответствующий текст указанным текстом замены ( замена ). Косая черта / является разделителем. Они изменчивы и при необходимости могут быть заменены другими персонажами. Обратите внимание, что s по умолчанию работает только при первом совпадении в строке.

      В следующем примере команда s заменяет cat на dog во входном тексте:

       $ echo 'Вчера мы приютили кошку.
      Кот довольно игривый.
      Мы любим нашего кота.
      Вы должны взять кошку из приюта.
      Там так много кошек. | sed s/cat/dog/ 

      Вы получите следующий результат:

       Вчера мы усыновили собаку.
      Собака довольно игривая.
      Мы любим нашу собаку.
      Вы должны взять собаку из приюта.
      Там так много собак. 

      Помните, что команда s заменяет только первое совпадение в строке. Если вы хотите заменить рубашка на пальто в следующем тексте, будет изменено только первое совпадение shirt :

       $ echo 'Черные рубашки. Розовые рубашки. Желтые рубашки. Синие рубашки. | sed s/shirt/coat/ 

      Результат:

       Черные пальто.  Розовые рубашки. Желтые рубашки. Синие рубашки. 

      Чтобы произвести замену более чем одного совпадения, вы можете указать, какое совпадение нужно изменить, с помощью числа или г символа после последнего разделителя. Добавление 2 изменит второе совпадение, 3 изменит третье совпадение и так далее. Использование g приведет к глобальным изменениям для всех совпадений. Вот пример:

       $ echo 'Черные рубашки. Розовые рубашки. Желтые рубашки. Синие рубашки. | sed sed s/shirt/coat/g 
       Черные пальто. Розовые пальто. Желтые пальто. Синие пальто. 

      Можно использовать специальные escape-символы от \1 до \9 и и для обозначения спичек. \1 будет представлять первое совпадение, \2 — второе и так далее. и относятся к первому совпадению, если иное не указано после последнего разделителя. Чтобы найти все вхождения слова кошка или кошки в тексте примера, выполните следующую команду:

       $ echo 'Вчера мы усыновили кошку.  Кот довольно игривый.
      Мы любим нашего кота. Вы должны взять кошку из приюта.
      Там так много кошек. | sed 's/кошки\?\b/(&)/g' 

      Он возвращает этот вывод:

       Вчера мы приютили (кошку). (Кошка) довольно игривая.
      Мы любим нашего (кота). Вы должны взять (кошку) из приюта.
      Там так много (котов). 

      Использование скобок вокруг символов и может быть полезно для поиска текста без замены.

      Специальные escape-символы от \1 до \9 помогают ссылаться на определенные совпадения в строке. Скажем, вы хотите изменить порядок этой последовательности чисел: 1 2 3 4 . Ниже приведен пример использования специальных escape-символов:

       $ echo '1 2 3 4' | sed -E 's/(\w\d*) (\w\d*) (\w\d*) (\w\d*)/\4 \3 \2 \1/' 

      Вот результат этой команды:

       4 3 2 1 

      Первое совпадение, \1 , размещается последним, а четвертое совпадение, \4 , размещается первым.

      Другое

      sed Команды

      sed предоставляет около двадцати пяти команд, включая команду s , рассмотренную ранее. Обычно используется p , который печатает содержимое пространства шаблонов. Так как sed по умолчанию выводит обработанный текст после цикла, при печати с p будут повторяющиеся записи. Следовательно, вы должны использовать флаги -n , --quiet или --silent , чтобы предотвратить запись sed на стандартный вывод. Вот эта команда в действии:

       $ echo 'Этот текст будет напечатан как вывод.' | sed --quiet p 

      Это его вывод:

       Этот текст будет напечатан как вывод. 

      Команда a добавляет текст в конец области шаблона на новой строке. Например, чтобы добавить отсутствующее слово tac в следующей последовательности, введите:

       $ echo 'tic
      палец ноги' | sed '1a tac' 

      Эта команда добавляет tac после строки 1, tic . Это вывод:

       тик
      так
      toe 

      Команда i вставляет текст в начало области шаблона на новой строке. Возьмите предыдущий пример. Чтобы добавить недостающую tac слово в следующей последовательности, запустите это:

       echo 'tic
      палец ноги' | sed '2i tac' 

      Эта команда добавляет tac в начале строки 2, toe . Это вывод:

       тик
      так
      toe 

      Команда d удаляет содержимое пространства шаблонов, а затем запускает новый цикл обработки. Используя флаги -i или --in-place , вы можете редактировать файлы на месте, чтобы убедиться, что удаления сохраняются в редактируемом файле. Однако, поскольку удаление нельзя отменить, целесообразно создать резервную копию исходного файла. Чтобы сделать резервную копию, укажите 9* Адрес $/ соответствует пустым строкам, которые затем удаляются.

      Команда w записывает содержимое пространства шаблонов в файл. И если указанный файл не существует, sed создает его. Ниже приведен пример текста, записываемого в new-file. txt :

       echo 'Это первое предложение нового файла.' | sed 'w new-file.txt' 

      Команда r добавляет текст в пространство шаблонов после его чтения из указанного файла. Прочитать содержимое new-file.txt , запустите это:

       echo 'Это содержимое new-file.txt:' | sed 'r new-file.txt' 

      Это будет вывод:

       Это содержимое new-file.txt:
      Это первое предложение нового файла. 

      Используйте команду c , чтобы полностью изменить содержимое пространства шаблонов. Например, чтобы изменить зубную пасту на жидкость для полоскания рта и яблоки на апельсины в списке покупок, выполните следующее:

       $ эхо 'зубная паста
      зерновой
      яблоки
      отбеливать
      хлеб
      молоко' | sed -e '1c жидкость для полоскания рта' -e '3c апельсины' 

      Это будет вывод:

       жидкость для полоскания рта
      зерновой
      апельсины
      отбеливать
      хлеб
      молоко 

      Это лишь некоторые из двадцати пяти команд sed. Вы можете проверить остальное в руководстве по sed, запустив man sed .

      Использование

      sed С awk

      awk — еще один инструмент обработки текста Unix, похожий на sed. Однако в основном он используется для извлечения записей данных, их обработки и составления отчетов. Как и sed, он обрабатывает вводимый текст построчно, может получать ввод из файлов или потоков ввода и применяет операции к тексту на основе предоставленных инструкций.

      Можно использовать awk и sed вместе через конвейеры. Допустим, вы хотите создать объединенные текстовые сообщения из списка клиентов в формате CSV. Вы должны использовать эту команду:

       $ echo 'Имя, Фамилия, Сумма счета, Оплачено
      Джейн, Смит, 250 долларов, ложь
      Алекс, Бойд, 113 долларов, правда
      Кейси,Ньютон,$90,false' | \
      awk -F ',' '$4 == "false" {print $1 " " $2 " " $3}' |\
      sed -E -e 's/([a-zA-Z]*) ([a-zA-Z]*) (\$[0-9]*)/\nHi \1 \2.\nВаш текущий счет это \3. Пожалуйста, урегулируйте это как можно скорее. \n/' 

      Команда выведет следующее:

       Привет, Джейн Смит.
      Ваш текущий счет составляет 250 долларов. Пожалуйста, уладьте это как можно скорее.
      Привет, Кейси Ньютон.
      Ваш текущий счет составляет 90 долларов. Пожалуйста, уладьте это как можно скорее. 

      awk считывает записи из входных потоков, проверяет выполнение условия ( Paid == false ) и выводит соответствующие записи в конвейер. sed читает эти записи из awk и создает с ними сообщения.

      Вы также можете передать вывод из sed в awk. Например, вместо true или false , чтобы указать, был ли оплачен счет, вы можете использовать эмодзи:

       $ echo 'Имя, фамилия, сумма счета, оплаченная
      Джейн, Смит, 250 долларов, ложь
      Алекс, Бойд, 113 долларов, правда
      Кейси,Ньютон,$90,false' | \
      sed -e 's/true/✅/' -e 's/false/❌/' | \
      awk -F ',' '{print $1 "," $2 "," $4}' | \
      столбец -s "," -t 

      Это выводит:

       Имя Фамилия Оплачено
      Джейн Смит ❌
      Алекс Бойд ✅
      Кейси Ньютон ❌ 

      Использование

      sed в сценариях Bash

      Чтобы использовать sed в сценарии bash, вам просто нужно поместить команды sed в сценарий и запустить сценарий. Вы можете создать сценарий hello-world.bash , выполнив следующую команду:

       echo "Hello, world! Это sed-печать из сценария bash". |\
      sed -n p" > hello-world.bash 

      Чтобы запустить скрипт, используйте следующую команду:

       $ bash hello-world.bash 

      Это напечатает следующий вывод:

       Привет, мир! Это sed печать из bash-скрипта 

      Использование

      sed Сценарии в файлах и в качестве аргументов

      При запуске sed вы можете предоставить командные сценарии в качестве аргументов или поместить их в файл. Флаги -e или --expression добавляют сценарии, указанные непосредственно как аргументы CLI, в команду sed . Флаги -f или --file используются для ввода содержимого файла сценария в команду sed . файлы сценариев sed обычно имеют расширение .sed 9Расширение 0034. Если ни один из предыдущих флагов не используется, sed берет первый переданный ему аргумент без флага в качестве сценария, который он будет выполнять.

      В следующем примере сценарий запускается с использованием флага -e :

       $ echo 'Привет, мир!' | sed -n -e 'p' 

      Этот пример считывает содержимое файла сценария hello-world.sed и передает его команде sed:

       $ echo 'p' > hello-world.sed && \
        эхо 'Привет, мир!' | sed -n -f привет-мир.sed 

      Обе предыдущие команды выведут следующее:

       Привет, мир! 

      Использование

      sed с другими инструментами CLI

      sed можно использовать с другими инструментами CLI через конвейеры. Поскольку sed может считывать входной поток, инструменты CLI могут передавать ему данные по конвейеру. Точно так же, поскольку sed записывает в стандартный вывод, он может передать свой вывод другим командам. Примеры sed и awk иллюстрируют это.

      Заключение

      sed дает вам большую власть над обработкой текста. Он предлагает гибкость при выполнении повторяющихся задач и имеет надежный набор команд и функций.