Забележка: Ще използваме Linux Mint 20 за демонстриране на използването на командата sed за замяна на низ във файл. Можете също така да използвате всеки друг вкус на Linux, ако желаете.
Използване на sed Command:
Сега ще ви покажем няколко много интересни примера за изобразяване на използването на командата sed в Linux. Нека видим как тази команда работи в различни сценарии.
Създаване на текстов файл за демонстрация:
За да демонстрираме използването на командата sed, бихме искали да работим с текстов файл. Можете обаче дори да създадете Bash файл или друг файл по ваш избор. На второ място, ще създадем файла в директорията Home, така че да не се налага да посочваме сложни пътеки, докато осъществяваме достъп до този файл. За създаване на текстов файл трябва да се изпълнят следните стъпки:
Щракнете върху иконата на файловия мениджър, разположена в лентата на задачите на Linux Mint 20:
Сега създайте нов текстов файл в директорията Home, като щракнете с десния бутон на мишката някъде там и след това изберете опцията New Document от каскадното меню и опцията Empty document от подкаскадното меню. След като текстовият файл е създаден, дайте му подходящо име. За този конкретен пример го нарекох като sed.текст.
Щракнете двукратно върху този файл, за да го отворите и въведете произволен текст в него, както е показано на изображението по-долу. Запазете този текстов файл, като натиснете Ctrl + S и след това го затворете.
Сега стартирайте терминала в Linux Mint 20, както е показано на следното изображение:
След като стартирате терминала в Linux Mint 20, можете да преминете през всички примери, споменати по-долу, един по един.
Използване на командата sed за замяна на всички случаи на дадена дума:
Можете да използвате командата sed за замяна на всички случаи на дадена дума в текстов файл. Синтаксисът за постигане на тази цел е споменат по-долу:
$ sed 's / sed / FindWord / ReplaceWord /' файл.текстТук трябва да замените FindWord с думата, която искате да замените, и ReplaceWord с думата, която трябва да бъде заменена. Освен това трябва да замените „файл“ с името на файла, където искате да извършите тези замествания. В този сценарий замених FindWord със sed и ReplaceWord със заместител. Името на нашия файл беше sed.текст. Той е показан и на следното изображение:
Успешното изпълнение на тази команда ще ви покаже промените, настъпили поради изпълнението на тази команда на вашия терминал:
Използване на командата sed за замяна на n-тото появяване на дадена дума във всеки ред:
Горният сценарий беше най-простият сценарий за замяна, но понякога не искате да замените всички появявания на дума, а искате да замените само първото, второто или n-тото появяване на тази дума във всички редове. За да направите това, можете да изпълните следната команда:
$ sed 's / FindWord / ReplaceWord / num' файл.текстТук трябва да замените FindWord с думата, която искате да замените, и ReplaceWord с думата, която трябва да бъде заменена. Освен това трябва да замените „файл“ с името на файла, където искате да извършите тези замествания. В този сценарий замених FindWord replace и ReplaceWord със sed. Името на нашия файл беше sed.текст. Също така, num се отнася до появата или позицията на думата, която трябва да бъде заменена. В демонстрирания пример искам да заменя първата поява на replace със sed във всеки ред, както е показано на изображението по-долу:
Успешното изпълнение на тази команда ще ви покаже промените, настъпили поради изпълнението на тази команда на вашия терминал:
Използване на командата sed за замяна на дадена дума в определен ред:
Понякога искате да замените дадена дума само в определен ред, а не в целия документ. За да направите това, изрично трябва да посочите конкретния номер на ред в следната команда:
$ sed 'LineNum s / FindWord / ReplaceWord /' файл.текстТук трябва да замените FindWord с думата, която искате да замените, и ReplaceWord с думата, която трябва да бъде заменена. Освен това трябва да замените „файл“ с името на файла, където искате да извършите тези замествания. В този сценарий съм заменил FindWord sed и ReplaceWord с replace. Името на нашия файл беше sed.текст. Също така трябва да замените LineNum с номера на реда на конкретния ред, в който искате да направите замяната. В този пример искахме да заменим sed с replace в ред номер 2 на нашия файл, както е показано на следващото изображение:
Успешното изпълнение на тази команда ще ви покаже промените, настъпили поради изпълнението на тази команда на вашия терминал. Можете лесно да проверите, че споменатите промени са настъпили само на ред номер 2 от нашия файл, а не в целия текст.
Заключение:
Винаги, когато почувствате необходимостта от замяна на която и да е дума във файл, първото нещо, което трябва да направите, е да идентифицирате конкретното си изискване i.д. дали искате да замените тази конкретна дума в целия файл, или искате да замените конкретна поява на тази конкретна дума, или искате да замените тази дума в определен ред. След като идентифицирате конкретния си сценарий, можете да използвате този специфичен метод от примерите, обсъдени в тази статия.