Примітка: Ми будемо використовувати Linux Mint 20 для демонстрації використання команди sed для заміни рядка у файлі. Ви також можете використовувати будь-який інший смак Linux, якщо хочете.
Використання команди sed:
Зараз ми покажемо вам кілька дуже цікавих прикладів для зображення використання команди sed в Linux. Давайте подивимося, як ця команда працює в різних сценаріях.
Створення текстового файлу для демонстрації:
Для демонстрації використання команди sed ми хотіли б працювати з текстовим файлом. Однак ви навіть можете створити файл Bash або будь-який інший файл на ваш вибір. По-друге, ми створимо файл у домашній директорії, щоб нам не потрібно було вказувати складні шляхи під час доступу до цього файлу. Для створення текстового файлу слід виконати такі дії:
Клацніть на піктограму Менеджера файлів на панелі завдань Linux Mint 20:
Тепер створіть новий текстовий файл у домашній директорії, клацнувши правою кнопкою миші в будь-якому місці, а потім вибравши опцію «Новий документ» у каскадному меню та опцію «Порожній документ» у підкаскадному меню. Після створення текстового файлу дайте йому відповідне ім’я. Для цього конкретного прикладу я назвав його як sed.txt.
Двічі клацніть на цьому файлі, щоб відкрити його, і введіть довільний текст, як показано на малюнку нижче. Збережіть цей текстовий файл, натиснувши Ctrl + S, а потім закрийте його.
Тепер запустіть термінал в Linux Mint 20, як показано на наступному зображенні:
Після запуску терміналу в Linux Mint 20 ви можете по черзі переглянути всі згадані нижче приклади.
Використання команди sed для заміни всіх випадків даного слова:
Ви можете використовувати команду sed для заміни всіх випадків входження даного слова в текстовий файл. Синтаксис досягнення цієї мети згаданий нижче:
Файл $ sed '/ sed / FindWord / ReplaceWord /'.txtТут вам потрібно замінити FindWord словом, яке ви хочете замінити, а ReplaceWord словом, яке потрібно замінити. Більше того, вам також потрібно замінити “файл” на ім’я файлу, де ви хочете зробити ці заміни. У цьому сценарії я замінив FindWord на sed і ReplaceWord на replace. Наше ім’я файлу було sed.txt. Це також показано на наступному зображенні:
Успішне виконання цієї команди покаже вам зміни, які відбулися через запуск цієї команди на вашому терміналі:
Використання команди sed для заміни n-го появи даного слова в кожному рядку:
Вищевказаний сценарій був найпростішим сценарієм заміни, однак часом не потрібно замінювати всі випадки входження слова, а потрібно замінити лише перше, друге або n-те входження цього слова у всі рядки. Для цього ви можете виконати таку команду:
Файл $ sed '/ FindWord / ReplaceWord / num'.txtТут вам потрібно замінити FindWord словом, яке ви хочете замінити, а ReplaceWord словом, яке потрібно замінити. Більше того, вам також потрібно замінити “файл” на ім’я файлу, де ви хочете зробити ці заміни. У цьому випадку я замінив FindWord replace і ReplaceWord на sed. Наше ім’я файлу було sed.txt. Крім того, num відноситься до появи або позиції слова, яке потрібно замінити. У продемонстрованому прикладі я хочу замінити перше входження replace на sed у кожному рядку, як показано на зображенні нижче:
Успішне виконання цієї команди покаже вам зміни, які відбулися через запуск цієї команди на вашому терміналі:
Використання команди sed для заміни заданого слова в конкретному рядку:
Іноді потрібно замінити дане слово лише у певному рядку, а не в цілому документі. Для цього вам потрібно явно вказати цей номер рядка в такій команді:
$ sed Файл 'LineNum s / FindWord / ReplaceWord /'.txtТут вам потрібно замінити FindWord словом, яке ви хочете замінити, а ReplaceWord словом, яке потрібно замінити. Більше того, вам також потрібно замінити “файл” на ім’я файлу, де ви хочете зробити ці заміни. У цьому сценарії я замінив FindWord sed і ReplaceWord на replace. Наше ім’я файлу було sed.txt. Крім того, вам потрібно замінити LineNum на номер рядка конкретного рядка, в якому ви хочете зробити заміну. У цьому прикладі ми хотіли замінити sed на заміну в рядку номер 2 нашого файлу, як показано на наступному зображенні:
Успішне виконання цієї команди покаже вам зміни, які відбулися через запуск цієї команди на вашому терміналі. Ви можете легко перевірити, що зазначені зміни відбулися лише в рядку № 2 нашого файлу, а не в цілому тексті.
Висновок:
Щоразу, коли ви відчуваєте необхідність замінити будь-яке слово у файлі, найперше, що вам потрібно зробити, це визначити свою конкретну вимогу i.e. чи ви хочете замінити це конкретне слово у цілому файлі, чи ви хочете замінити конкретне входження цього конкретного слова, чи ви хочете замінити це слово в конкретному рядку. Після того, як ви визначили свій конкретний сценарій, ви можете використовувати цей конкретний метод із прикладів, обговорених у цій статті.