Как да използвате Sed в Linux

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

? Наздраве!

Категория: Linux