сед

Как да заменим последната поява, използвайки 'sed'

Как да заменим последната поява, използвайки 'sed'
Командата 'sed' се използва в Linux за различни видове текстови операции, като вмъкване, изтриване, замяна и др. Различни типове задачи за подмяна могат да бъдат изпълнени с помощта на командата 'sed' лесно. Всяка задача за замяна може да бъде изпълнена въз основа на търсещия текст или модел. Текстът или шаблонът за търсене може да се появи няколко пъти в низа или файла, където ще се извърши търсенето. Как можете да замените последното появяване на търсещия текст или модел е показано в този урок.

Заменете последното появяване на текста в низ:

Този раздел показва как последното появяване на шаблона за търсене в низ може да бъде заменено с помощта на командата 'sed'.

Пример-1: Заменете последното появяване на дума въз основа на шаблон

Следващата команда 'sed' ще търси думата „PHP“ в низа и заменете търсещата дума с думата „AngularJS“ ако думата съществува в низа.

$ echo "Java PHP Bash Python JavaScript PERL PHP Laravel" |
sed 's / \ (.* \) PHP / \ 1AngularJS / '

След изпълнението на командата ще се появи следният изход. Ето, думата „PHP“ съществува два пъти в низа и последното появяване е заменено с думата ' Ъглов JS'.

Пример-2: Заменете последното появяване на модел, базиран на цифри

Следващата команда 'sed' ще търси всяка цифра в низа и ще замени последната цифра с числото 9.

$ echo "Първата стойност на брояча 2. Втората броячна стойност 4 "|
sed 's / \ (.* \) [0-9]) * / \ 19 / '

След изпълнението на командата ще се появи следният изход. Тук цифрата се появява два пъти в низа и последната цифра, 4, е заменен с номера 9.

Пример-3: Заменете последната цифра от числото въз основа на модела

Следващата команда 'sed' ще замени последната цифра, която съществува в стойността на низа, със стойността с двойна нула (0 0).

$ echo "Цената на продукта е 500 $."| sed 's / \ (.* \) [0-9] / \ 100 / '

След изпълнението на командата ще се появи следният изход. Тук, 500 съществува в стойността на низа. Така че, според командата за замяна, последната нула от 500 е заменен с две двойни нули и заменената стойност е 5000.

Пример-4: Заменете последното появяване на дума с друга дума

Следващата команда 'sed' ще търси думата "Юни" в низа и заменете последната поява на думата със стойността, 'Може'.

$ printf "% s \ n" януари февруари юни април юни декември | tr '\ n' "|
sed 's / \ (.* \) Юни / \ 1май / '| tr "'\ n'

След изпълнението на командата ще се появи следният изход. Ето, думата "Юни" съществува два пъти в низа и последното появяване е заменено с думата 'Може'.

Заменете последното появяване на текст във файл:

Създайте текстов файл с име Продажби.текст със следното съдържание за тестване на командата 'sed', използвана в тази част на урока за замяна на последното появяване на текст, базиран на шаблона.

Продажби.текст

Месец Година Количество
Януари 2018 $ 200000
Март 2019 $ 300000
Април 2019 $ 150000
Март 2020 г. $ 350000
Май 2019 $ 210000
Януари 2020 г. $ 240000

Пример-5: Заменете последното появяване на дума с друга дума

Следващата команда 'sed' ще търси думата - Януари'във файла и заменете последното появяване на тази дума с думата, 'Юли'.

$ котка Продажби.текст
$ sed '$ s / януари / юли /' Продажби.текст

След изпълнението на командите ще се появи следният изход. Думата "Януари" се появява два пъти във файла. Последното събитие, което съществува в 7ти редът на файла е заменен с думата 'Юли'в изхода.

Пример-6: Заменете последното появяване на число с друго число

'tac' команда се използва за обръщане на съдържанието на файла. 'tac' команда се използва с командата 'sed' в следната команда за замяна на последното появяване на '2019'с думата, „2017“.

$ котка Продажби.текст
$ tac Продажби.txt | sed '0, / 2019 / s / 2019/2017 /' | tac

След изпълнението на командите ще се появи следният изход. Тук стойността на годината, '2019се появява три пъти във файла. Първият, 'tac' команда обърна съдържанието на файла и изпрати изхода в "сед" команда за заместване на първата поява на „2019“ което е последното вписване във файла по стойността на годината, „2017“. След замяната изходът е изпратен на 'tac' команда, за да обърнете изхода отново. По този начин последното появяване на '2019 г'е заменен със стойността, '2017'.

Пример-7: Заменете всичко на ред въз основа на последното появяване на дума

Следното "сед" команда ще замени реда с текст с разделител (\ t), където редът започва с низа „Март“ за последно във файла.

$ котка Продажби.текст
$ tac Продажби.txt | sed '0, / ^ март.* / s / ^ март.* / Юли \ t \ t2018 \ t $ 400000 / '| tac

След изпълнението на командите ще се появи следният изход. Два реда във файла започват с низа, „Март“, и последното появяване на този низ се появява в 5ти линия. Първият 'tac' командата е използвана за обръщане на съдържанието на файла и изпраща изхода на 'сед команда. 'сед'команда е заменила реда с текст,'Юли 2018 г. $ 400000'където низът за търсене е намерен за първи път. Резултатът от "седкомандата е изпратена до 'tac' команда отново, за да обърнете изхода, който е основното съдържание на файла.

Заключение:

Командата 'sed' може да се използва за замяна на всяка част от низ или ред от файла по различни начини, като се използват шаблони на регулярни изрази. Този урок показа начините за заместване на последното появяване на текста за търсене в низ или файл с помощта на множество команди 'sed'. Как командата 'tac' може да се използва с командата 'sed', за да замести последното появяване на търсещия текст, също е показано в този урок. Но всички команди, използвани тук, ще генерират временно изхода. Трябва да използвате опцията '-i' с командата 'sed', за да промените съдържанието на файла за постоянно въз основа на шаблона.

Как да заснемете и поточно предадете игралната си сесия на Linux
В миналото играта на игри се смяташе само за хоби, но с течение на времето игралната индустрия отбеляза огромен ръст по отношение на технологиите и бр...
Най-добрите игри за игра с ръчно проследяване
Oculus Quest наскоро представи страхотната идея за ръчно проследяване без контролери. С непрекъснато нарастващия брой игри и дейности, които изпълнява...
Как да покажете OSD наслагване в приложения на цял екран за Linux и игри
Играта на цял екран или използване на приложения в режим на цял екран без разсейване може да ви откъсне от съответната системна информация, видима в п...