sed Команда за подмяна на низ във файл

Sed Command Replace String File



Винаги, когато работим с всякакъв вид файлове, е много обичайна практика да правим промени в тези файлове, като намираме и заменяме думи. Повечето текстови редактори предоставят различни базирани на графичен интерфейс методи за извършване на тези модификации. Понякога обаче се нуждаете от начин да намерите и замените думите във файл чрез терминала. Затова в тази статия ще ви преведем по метода на използване на командата sed за замяна на низ в текстов файл. Ще хвърлим светлина и върху различните сценарии, при които тази команда може да се използва.

Забележка: Ще използваме Linux Mint 20 за демонстриране на използването на командата sed за замяна на низ във файл. Можете също да използвате всеки друг вкус на Linux, ако желаете.







Използване на командата sed:

Сега ще ви покажем някои много интересни примери за изобразяване на използването на командата sed в Linux. Нека да видим как тази команда работи в различни сценарии.



Създаване на текстов файл за демонстрация:

За да демонстрираме използването на командата sed, бихме искали да работим с текстов файл. Можете обаче дори да създадете Bash файл или друг файл по ваш избор. На второ място, ние ще създадем файла в началната директория, така че да не се налага да посочваме никакви сложни пътища при достъп до този файл. За да създадете текстов файл, трябва да изпълните следните стъпки:



Щракнете върху иконата File Manager, разположена в лентата на задачите на Linux Mint 20:





Сега създайте нов текстов файл в началната директория, като щракнете с десния бутон на мишката някъде там и след това изберете опцията Нов документ от каскадното меню и опцията Празен документ от подкаскадното меню. След като текстовият файл е създаден, дайте му подходящо име. За този конкретен пример съм го кръстил като sed.txt.



Щракнете двукратно върху този файл, за да го отворите, и въведете произволен текст в него, както е показано на изображението по -долу. Запазете този текстов файл, като натиснете Ctrl +S и след това го затворете.

Сега стартирайте терминала в Linux Mint 20, както е показано на следното изображение:

След като стартирате терминала в Linux Mint 20, можете да разгледате един по един всички примери, споменати по -долу.

Използване на командата sed за замяна на всички събития на дадена дума:

Можете да използвате командата sed за замяна на всички появления на дадена дума в текстов файл. Синтаксисът за постигане на тази цел е споменат по -долу:

$sed/sed/FindWord/ReplaceWord/'File.txt

Тук трябва да замените FindWord с думата, която искате да замените, и ReplaceWord с думата, която ще бъде заменена. Освен това трябва да замените файла с името на файла, където искате да направите тези замени. В този сценарий замених FindWord със sed и ReplaceWord с replace. Името на файла ни беше sed.txt. Той е показан и на следното изображение:

Успешното изпълнение на тази команда ще ви покаже промените, настъпили поради изпълнението на тази команда на вашия терминал:

Използване на командата sed за замяна на n -тата поява на дадена дума във всеки ред:

Горният сценарий беше най -простият сценарий за замяна, но понякога не искате да замествате всички появявания на дума, а искате да замените само първото, второто или n -тото появяване на тази дума във всички редове. За да направите това, можете да изпълните следната команда:

$sed/FindWord/ReplaceWord/num 'file.txt

Тук трябва да замените FindWord с думата, която искате да замените, и ReplaceWord с думата, която ще бъде заменена. Освен това трябва да замените файла с името на файла, където искате да направите тези замени. В този сценарий замених FindWord replace и ReplaceWord със sed. Името на файла ни беше sed.txt. Също така, num се отнася до появата или позицията на думата, която трябва да бъде заменена. В демонстрирания пример искам да заменя първото появяване на replace със sed във всеки ред, както е показано на изображението по -долу:

Успешното изпълнение на тази команда ще ви покаже промените, настъпили поради изпълнението на тази команда на вашия терминал:

Използване на командата sed за замяна на дадена дума в конкретен ред:

Понякога искате само да замените дадена дума в определен ред, а не в целия документ. За да направите това, трябва изрично да посочите този конкретен номер на ред в следната команда:

$sed„LineNum s/FindWord/ReplaceWord/'File.txt

Тук трябва да замените FindWord с думата, която искате да замените, и ReplaceWord с думата, която ще бъде заменена. Освен това трябва да замените файла с името на файла, където искате да направите тези замени. В този сценарий замених FindWord sed и ReplaceWord с replace. Името на файла ни беше sed.txt. Също така трябва да замените LineNum с номера на реда на конкретния ред, в който искате да направите подмяната. В този пример искахме да заменим sed с replace в ред номер 2 на нашия файл, както е показано на следното изображение:

Успешното изпълнение на тази команда ще ви покаже промените, настъпили поради изпълнението на тази команда на вашия терминал. Можете лесно да проверите дали посочените промени са настъпили само на ред номер 2 на нашия файл, а не в целия текст.

Заключение:

Всеки път, когато почувствате необходимостта от замяна на която и да е дума във файл, първото нещо, което трябва да направите, е да определите конкретното си изискване, т.е. дали искате да замените тази конкретна дума в целия файл, или искате да замените конкретна поява на тази конкретна дума или искате да замените тази дума в определен ред. След като определите конкретния си сценарий, можете да използвате този специфичен метод от примерите, обсъдени в тази статия.