Примечание: мы будем использовать 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.е. хотите ли вы заменить это конкретное слово во всем файле, или вы хотите заменить конкретное вхождение этого конкретного слова, или вы хотите заменить это слово в определенной строке. После того, как вы определили свой конкретный сценарий, вы можете использовать этот конкретный метод из примеров, обсуждаемых в этой статье.