sed

Команда sed для замены строки в файле

Команда sed для замены строки в файле
Когда мы работаем с файлами любого типа, очень распространенной практикой является внесение изменений в эти файлы путем поиска и замены слов. Большинство текстовых редакторов предоставляют различные методы на основе графического интерфейса для выполнения этих изменений. Однако иногда вам нужен способ найти и заменить слова в файле через терминал. Поэтому в этой статье мы познакомим вас с методом использования команды sed для замены строки в текстовом файле. Мы также расскажем о различных сценариях использования этой команды.

Примечание: мы будем использовать Linux Mint 20 для демонстрации использования команды sed для замены строки в файле. Вы также можете использовать любой другой вариант Linux, если хотите.

Использование команды sed:

Теперь мы собираемся показать вам несколько очень интересных примеров, демонстрирующих использование команды sed в Linux. Давайте посмотрим, как эта команда работает в разных сценариях.

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

Чтобы продемонстрировать использование команды sed, мы хотели бы работать с текстовым файлом. Однако вы даже можете создать файл Bash или любой другой файл по вашему выбору. Во-вторых, мы создадим файл в домашнем каталоге, чтобы нам не приходилось указывать какие-либо сложные пути при доступе к этому файлу. Для создания текстового файла необходимо выполнить следующие шаги:

Щелкните значок диспетчера файлов, расположенный на панели задач Linux Mint 20:

Теперь создайте новый текстовый файл в домашнем каталоге, щелкнув правой кнопкой мыши в любом месте, а затем выбрав параметр «Новый документ» в каскадном меню и параметр «Пустой документ» в подкатакадном меню. После создания текстового файла дайте ему подходящее имя. В этом конкретном примере я назвал его sed.текст.

Дважды щелкните этот файл, чтобы открыть его, и введите в него произвольный текст, как показано на изображении ниже. Сохраните этот текстовый файл, нажав Ctrl + S, а затем закройте его.

Теперь запустите терминал в Linux Mint 20, как показано на следующем изображении:

После запуска терминала в Linux Mint 20 вы можете просмотреть все примеры, упомянутые ниже, один за другим.

Использование команды sed для замены всех вхождений данного слова:

Вы можете использовать команду sed для замены всех вхождений данного слова в текстовом файле. Синтаксис достижения этой цели упомянут ниже:

$ sed 's / sed / FindWord / ReplaceWord /' файл.текст

Здесь вам нужно заменить FindWord словом, которое вы хотите заменить, и ReplaceWord словом, которое нужно заменить. Кроме того, вам также необходимо заменить «файл» на имя файла, в котором вы хотите произвести эти замены. В этом сценарии я заменил FindWord на sed и ReplaceWord на replace. Наше имя файла было sed.текст. Это также показано на следующем изображении:

Успешное выполнение этой команды покажет вам изменения, которые произошли из-за запуска этой команды на вашем терминале:

Использование команды sed для замены n-го вхождения данного слова в каждой строке:

Вышеупомянутый сценарий был простейшим сценарием замены, однако иногда вы не хотите заменять все вхождения слова, а хотите заменить только первое, второе или n-е вхождение этого слова во всех строках. Для этого вы можете выполнить следующую команду:

Файл $ sed / FindWord / ReplaceWord / num.текст

Здесь вам нужно заменить FindWord словом, которое вы хотите заменить, и ReplaceWord словом, которое нужно заменить. Кроме того, вам также необходимо заменить «файл» на имя файла, в котором вы хотите произвести эти замены. В этом сценарии я заменил FindWord replace и ReplaceWord на sed. Наше имя файла было sed.текст. Кроме того, число относится к вхождению или позиции слова, которое нужно заменить. В продемонстрированном примере я хочу заменить первое вхождение replace на sed в каждой строке, как показано на изображении ниже:

Успешное выполнение этой команды покажет вам изменения, которые произошли из-за запуска этой команды на вашем терминале:

Использование команды sed для замены данного слова в определенной строке:

Иногда вам нужно заменить данное слово только в определенной строке, а не во всем документе. Для этого вам необходимо явно указать этот конкретный номер строки в следующей команде:

$ sed 'LineNum s / FindWord / ReplaceWord /' файл.текст

Здесь вам нужно заменить FindWord словом, которое вы хотите заменить, и ReplaceWord словом, которое нужно заменить. Кроме того, вам также необходимо заменить «файл» на имя файла, в котором вы хотите произвести эти замены. В этом сценарии я заменил FindWord sed и ReplaceWord на replace. Наше имя файла было sed.текст. Кроме того, вам необходимо заменить LineNum на номер конкретной строки, в которой вы хотите произвести замену. В этом примере мы хотели заменить sed на replace в строке номер 2 нашего файла, как показано на следующем изображении:

Успешное выполнение этой команды покажет вам изменения, которые произошли из-за запуска этой команды на вашем терминале. Вы можете легко убедиться, что указанные изменения произошли только в строке номер 2 нашего файла, а не во всем тексте.

Заключение:

Всякий раз, когда вы чувствуете необходимость заменить какое-либо слово в файле, первое, что вам нужно сделать, это определить ваше конкретное требование i.е. хотите ли вы заменить это конкретное слово во всем файле, или вы хотите заменить конкретное вхождение этого конкретного слова, или вы хотите заменить это слово в определенной строке. После того, как вы определили свой конкретный сценарий, вы можете использовать этот конкретный метод из примеров, обсуждаемых в этой статье.

Как показать наложение OSD в полноэкранных приложениях и играх Linux
Игра в полноэкранные игры или использование приложений в полноэкранном режиме без отвлекающих факторов может отрезать вас от соответствующей системной...
Топ-5 карт для захвата игр
Все мы видели и любили потоковые игры на YouTube. PewDiePie, Jakesepticye и Markiplier - лишь некоторые из лучших игроков, которые заработали миллионы...
Как разработать игру в Linux
Десять лет назад не многие пользователи Linux могли бы предсказать, что их любимая операционная система однажды станет популярной игровой платформой д...