Sed
означава редактор на потоци. Това е базиран на команден ред редактор за Linux. Популярното използване на sed е за редактиране на файл(и) като част от скрипт за автоматизация в Linux, тъй като обикновените редактори изискват активно въвеждане от потребителя и не могат да редактират файлове извън екраните на редактора. Sed най-често се използва за извършване на намиране и замяна от командния ред.
Този тип текстов редактор също може да бъде категоризиран като неинтерактивен текстов редактор.
Нека видим някои често срещани опции за редактиране на файлове с помощта на Sed. Ще вземем следния файл като пример:
$: cat test.txt Бързо кафяво куче прескочи мързеливата котка. Операционна система Linux. В гората близо до моето място има котка, както и вълци.
Търсене и замяна
За да потърсите низ във файл и да го замените с друг низ, изпълнете:
sed -i "s/cat/fox/g" test.txt
Ето, -i
флагът инструктира sed да запише промените във файла. Без това знаме, sed
просто ще покаже файла с променен низ.
В кавичките имаме с/котка/лисица/гр
. В с
е за командата за търсене и замяна на sed
. След това имаме низа за търсене, който е котка
. След това низът, с който да го замените, т.е. лисица
. И накрая, имаме опцията ж
, който инструктира sed
за да замените всички срещания на всички редове на файла. Без ж
, sed ще замени само първото появяване на котка
на всеки ред.
Тук може да се използва и Regex.
sed -i "s/f[a-z]*\./cat\./g"
Вмъкване
За да вмъкнете текст преди ред със съвпадащ низ, използвайте:
sed -i "/cat/i Начало:" test.txt
Тук, котка
е търсеният низ и Начало:
е низът за въвеждане преди реда, където е намерен търсеният низ.
По същия начин, за да вмъкнете текст след ред, използвайте:
sed -i "/fox/a Край." test.txt
Изтрий
За да изтриете ред, съдържащ подниз, използвайте:
sed -i "/Linux/d" test.txt
За да изтриете ред с номер на ред, напр. първия ред, използвайте:
sed -i '1d' test.txt
Комбиниране на множество функции
За комбиниране на множество функции, напр. търсене и замяна, изтриване с една команда, -е
флаг може да се използва.
sed -i -e "s/fox/cat/g" -e '2d' test.txt
? Наздраве!