Какво представлява командата sed в Linux?

Linux предоставя мощни инструменти за работа с текстови файлове. Един от най-гъвкавите е командата sed. Това е съкращение от stream editor (редактор на потоци). Тя позволява обработка на текст ред по ред директно от командния ред. С sed можете да извършвате замени, изтривания, вмъквания и други трансформации върху текст без нужда от ръчно отваряне на файловете.
В тази статия ще разгледаме как работи sed, какви са основните му приложения и ще дадем практични примери. Статията е насочена към начинаещи и напреднали потребители, които искат да автоматизират обработката на текст в Linux.
Как работи командата sed
sed чете входните данни ред по ред и прилага върху тях зададените команди. По подразбиране, той отпечатва всеки ред на стандартния изход, дори и когато не е модифициран. Най-често използваният синтаксис изглежда така:
sed [опции] 'команди' [файл]
Нека разгледаме това по части:
- опции – допълнителни параметри, като
-n(за потискане на автоматичния печат). - команди – инструкции за манипулация на текста (например замяна).
- файл – име на текстовия файл, който ще се обработва.
Ако не е зададен файл, sed приема вход от клавиатурата или от друг команден източник чрез конвейер (|).
Най-често използваната команда: s (замяна)
Командата s означава „замени“ (substitute). Тя се използва за търсене и замяна на текст. Форматът е:
sed 's/стар_текст/нов_текст/' файл
Пример:
sed 's/котка/куче/' текст.txt
Тази команда ще замени първата поява на "котка" с "куче" на всеки ред от файла.
Ако искаме да заменим всички срещания на думата в реда, добавяме флаг g:
sed 's/котка/куче/g' текст.txt
Флагове, които можете да използвате:
- g – глобална замяна (всички срещания в реда)
- i – нечувствителност към големи и малки букви
- p – извеждане на променените редове
- n – потиска автоматичното извеждане (заедно с
-nопцията)
Изтриване на редове с команда d
С sed можем да изтриваме редове. Това става с командата d:
sed '2d' файл.txt
Тук се изтрива вторият ред. За да изтриете диапазон от редове, използвайте:
sed '2,5d' файл.txt
Това ще премахне редове от 2 до 5 включително.
Можем също да изтриваме редове по съдържание. Например:
sed '/грешка/d' логове.txt
Тази команда изтрива всички редове, съдържащи думата „грешка“.
Вмъкване и добавяне на редове
sed позволява вмъкване на нов ред преди или след конкретен ред с i и a.
Вмъкване преди ред:
sed '3i Този ред ще бъде добавен преди третия.' файл.txt
Добавяне след ред:
sed '3a Този ред ще бъде добавен след третия.' файл.txt
Замяна на съдържание в определен ред
Понякога искаме да модифицираме конкретен ред:
sed '5s/старо/ново/' файл.txt
Тук се заменя думата „старо“ с „ново“ само в петия ред.
Запис на резултата във файл
По подразбиране sed отпечатва резултата на екрана. Ако искате да запишете промените във файл:
sed 's/котка/куче/g' файл.txt > нов_файл.txt
Ако искате да промените оригиналния файл, използвайте опцията -i (in-place):
sed -i 's/котка/куче/g' файл.txt
Внимание: Без допълнителна настройка -i променя файла без възможност за връщане назад. Можете да направите резервно копие:
sed -i.bak 's/котка/куче/g' файл.txt
Това ще създаде резервен файл с разширение .bak.
Създаване на скрипт с множество sed команди
Можете да запишете множество sed команди в текстов файл и да ги изпълните като скрипт:
Файл: промени.sed
s/старо1/ново1/g
s/старо2/ново2/g
/нежелано/d
Изпълнение:
sed -f промени.sed вход.txt > изход.txt
Ограничаване на операциите до определени редове
Можете да кажете на sed да прилага операции само на избрани редове.
sed '5,10s/тест/пример/g' файл.txt
Тази команда заменя "тест" с "пример" само от ред 5 до 10.
Кога да използвате sed
sed е идеален, когато трябва бързо да направите промени в голям текстов файл. Той е по-ефикасен от отваряне на файла в текстов редактор. Често се използва в скриптове, системна администрация и обработка на логове.
Използвайте го, когато:
- Трябва да замените текст в много файлове.
- Искате да автоматизирате рутинна обработка на данни.
- Работите със системни конфигурации или лога.
Заключение
Командата sed е невероятно мощен инструмент за текстова обработка в Linux. Тя комбинира гъвкавост, скорост и лекота на използване. Макар синтаксисът ѝ да изглежда сложен в началото, с практика ще откриете, че sed е незаменим помощник. От прости замени до сложни трансформации – sed ви дава контрол върху текстовите данни, без да напускате терминала.
Съвет: Ако искате да се упражнявате с sed, направете копие на текстовите си файлове преди да започнете. Това ще ви спести неочаквани проблеми.

