Какво е SED в Linux и как го използвате?
sed е предназначен за трениране и е често използвана команда в Linux / Unix. Името идва от портманто на тези две думи. Това не е текстов редактор, макар и да променя текста. Вместо това, sed получава текстовото въвеждане като "поток" и редактира потока според инструкциите.
Като цяло хората използват sed
като версия на командния ред за намиране и замяна. Основната команда в програмата се използва за заместване на един символен низ с друг. Това го прави полезно при стартирането на функциите за намиране и замяна на файлове, но не е толкова лесно да се използва като нещо от Notepad или Word. Ще откриете, че синтаксисът е малко по-известен, но щом го направите, ще видите колко невероятно мощен е този компактен редактор.
Използване на sed за замяна
За да използвате sed, ще трябва да отворите прозореца на терминала. Командата се извиква със sed
, но като се пише, че самият няма да направи нищо. Трябва да предоставите една от командите, както и някои параметри.
Най-често срещаният параметър е заместител или s
. Една обикновена команда за заместване на сън изглежда по следния начин:
седан / котка / куче /
Тази команда ще нареди на sed да сканира входящия текст и да замени всеки случай на низ "котка" с "куче". За да покажем, ще използваме командата echo
да дадем нещо, с което да работим.
ехо катапулт на котка | седан / котка / куче /
Има три основни части на командата sed. Първо, там е sed
който стартира програмата. След това има s
който започва командата за заместване. Предната наклонена черта /
е сепаратор. След това ще бъде търсен низът. Низът след втората наклонена черта ще бъде заместващите символи, които седят в потока. Крайната наклонена черта затваря командата. Всички заедно, това е 's/text-to-find/text-to-replace/'
.
Обърнете внимание на единичните кавички в този пример. Единичните кавички ви позволяват да използвате мета кодовете в командата си. Докато котировките не са от съществено значение за повечето от примерите ни, трябва да развиете навика да използвате котировки за всички команди.
Какво ще кажете за частичните струни? Горната команда ще работи върху всякакъв вид на низ "котка", дори ако е част от друга дума. Например, "катапултът" ще стане "купа", тъй като "катамаран" ще стане "кумамаран".
ехо катапулт | седан / котка / куче /
Глобална замяна
В нашия първи пример може да сте забелязали, че е заменено само първото копие на съответстващия низ. Подобно на много помощни програми на GNU, sed е базирано на линия. В резултат на това той работи само на първия мач в рамките на една линия. Ако в линията има няколко съвпадения за кандидат стринга, само първата ще бъде променена. За да направите sed работа при всяка поява на целевия низ, използвайте флаг g
в края на командата:
sed 's / cat / dog / g'
Това ще действа както следващия пример:
ехо катапулт катамаран | sed 's / cat / dog / g'
Без глобалното знаме ще бъде заменено само първото копие на "котка" във всеки ред.
Настройване на входни и изходни файлове
По подразбиране sed ще работи на стандартен вход. Това обаче не е много полезно. За да стартирате sed върху файл, посочете името на файла в края на командата, както е така:
sed 's / cat / dog / g' oldfile.txt> newfile.txt
Това ще стартира на "oldfile.txt" и ще запази изхода на командата "newfile.txt". Ако "newfile.txt" не съществува, той ще бъде създаден от командата. Ако не зададете изходен файл, sed ще отразява новия текст на файла в стандартен вход.
Ако искате да презапишете съдържанието на файл, ще трябва да използвате флага -i
. Този флаг прави редакциите "на място".
sed-i '' 's / cat / dog' oldfile.txt
Тази команда незабавно презаписва съдържанието на целевия файл, което е малко опасно. За да останете на сигурно място, можете да създадете резервно копие на място.
За да създадете резервно копие на файла, поставете разширение след -i
. Не е необходимо да бъде функционално разширение: ".bu" или ".bak" работят добре. Това ще създаде резервен файл с разширение.
sed-i.bak's / cat / dog 'oldfile.txt
Това създава "oldfile.txt.bak", който съдържа нерегистрираните текстови данни от оригиналната версия на "oldfile.txt".
Съчетаване на регулярни изрази
Истинската сила на sed
идва от съвпадение на регулярните изрази. Това ви позволява да зададете модели за съвпадение, а не буквални струни. Например, можем да използваме нещо като низ по-долу, за да повторим набор от един или повече номера:
ехо "123 abc" sed 's / [0-9] [0-9] * / & &
Допълнително обучение
sed е изключително мощна програма с дълбочина на сила, подобна на скриптов език. За да научите повече за пълните възможности на Sed, вижте изчерпателното ръководство на Bruce Barnett за Sed.