sed

Як замінити останнє входження за допомогою 'sed'

Як замінити останнє входження за допомогою 'sed'
Команда "sed" використовується в Linux для різних типів текстових операцій, таких як вставка, видалення, заміна тощо. За допомогою команди 'sed' легко виконувати різні типи завдань заміни. Будь-яке завдання заміни можна виконати на основі тексту пошуку або шаблону. Текст або шаблон пошуку може відбуватися кілька разів у рядку або файлі, де буде здійснено пошук. Як ви можете замінити останнє входження тексту пошуку або шаблону, було показано в цьому посібнику.

Замініть останнє входження тексту в рядок:

Цей розділ показує, як останнє входження шаблону пошуку в рядок може бути замінено за допомогою команди 'sed'.

Приклад-1: Замініть останнє входження слова на основі зразка

Наступна команда 'sed' буде шукати слово "PHP" у рядку та замініть пошукове слово на слово 'AngularJS' якщо слово існує в рядку.

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

Наступний результат з’явиться після запуску команди. Ось, слово "PHP" існує два рази у рядку, і останнє входження було замінено словом ' AngularJS'.

Приклад-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'

Наступний результат з’явиться після запуску команди. Ось, слово 'Червень' існує два рази в рядку, і останнє входження було замінено словом 'Може'.

Замінити останнє входження тексту у файл:

Створіть текстовий файл з іменем Продажі.txt із наступним вмістом для перевірки команди 'sed', яка використовується у цій частині підручника для заміни останнього входження тексту на основі шаблону.

Продажі.txt

Місяць Рік Сума
Січень 2018 $ 200000
Березень 2019 $ 300000
Квітень 2019 $ 150000
Березень 2020 $ 350000
Травень 2019 $ 210000
Січень 2020 $ 240000

Приклад-5: Замініть останнє входження слова іншим словом

Наступна команда 'sed' буде шукати слово 'Січень'у файлі та замініть останнє входження цього слова на слово, 'Липень'.

$ Продаж котів.txt
$ sed '$ s / січень / липень /' Продажі.txt

Наступний результат з'явиться після запуску команд. Слово 'Січень' з'являється два рази у файлі. Останнє, що існує в 7го рядок файлу замінено словом 'Липень'на виході.

Приклад-6: Замініть останнє входження числа іншим числом

"так" команда використовується для зворотного змісту файлу. "так" команда використовується з командою 'sed' у наступній команді, щоб замінити останнє входження '2019'зі словом, '2017'.

$ Продаж котів.txt
$ tac Продажі.txt | sed '0, / 2019 / s / 2019/2017 /' | так

Наступний результат з’явиться після запуску команд. Тут значення року, '2019'з'являється тричі у файлі. Перший, "так" Команда змінила вміст файлу і надіслала вихідні дані в файл 'sed' команда для заміни першого входження '2019' що є останнім випадком у файлі за значенням року, '2017'. Після заміни вихідні дані були надіслані на "так" команда повернути результат назад знову. Таким чином, останній випадок2019 р'було замінено на значення, '2017 рік'.

Приклад-7: Замініть усі рядки на основі останнього входження слова

Наступне 'sed' команда замінить рядок текстом, розділеним табуляцією (\ t), де рядок починається з рядка 'Бер' востаннє у файлі.

$ Продаж котів.txt
$ tac Продажі.txt | sed '0, / ^ берез.* / s / ^ берез.* / Липень \ t \ t2018 \ t $ 400000 / '| так

Наступний результат з'явиться після запуску команд. Два рядки у файлі починаються з рядка, 'Бер', і останнє входження цього рядка з'являється в 5го лінія. Перший "так" команда була використана для зворотного змісту файлу та надіслала вихідні дані до 'sed ' команди. 'sed'команда замінила рядок текстом,'Липень 2018 $ 400000'де рядок пошуку знайдений вперше. Вихідні дані 'сед'команда надіслана до "так" знову виконати команду, щоб змінити результат, який є основним вмістом файлу.

Висновок:

Команда 'sed' може бути використана для заміни будь-якої частини рядка або рядка файлу різними способами за допомогою шаблонів регулярних виразів. Цей підручник показав способи заміни останнього входження тексту пошуку у рядку або файлі за допомогою декількох команд 'sed'. Про те, як команду 'tac' можна використовувати з командою 'sed' для заміни останнього входження тексту пошуку, також показано в цьому посібнику. Але всі використані тут команди тимчасово генерують результат. Вам потрібно скористатися опцією '-i' з командою 'sed', щоб назавжди змінити вміст файлу на основі шаблону.

Встановіть найновіший емулятор Dolphin для Gamecube & Wii на Linux
Емулятор Dolphin дозволяє грати у вибрані вами ігри Gamecube та Wii на персональних комп’ютерах Linux (ПК). Будучи вільно доступним і відкритим ігров...
Як використовувати GameConqueror Cheat Engine в Linux
Стаття висвітлює посібник із використання механізму читів GameConqueror в Linux. Багато користувачів, які грають у ігри в Windows, часто використовуют...
Кращі емулятори ігрової консолі для Linux
У цій статті буде перелічено популярне програмне забезпечення для емуляції ігрової консолі, доступне для Linux. Емуляція - це рівень сумісності програ...