Какво представлява командата 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
, направете копие на текстовите си файлове преди да започнете. Това ще ви спести неочаквани проблеми.
Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу:
Donate ☕️ Дарете с PayPalDonate 💳 Дарете с Revolut