Bash - это командный процесс, совместимый с оболочкой UNIX, основная задача которого - управлять строками, выполняемыми в среде оболочки. Иногда программисты вынуждены работать с разными файлами. Они могут добавлять, удалять и заменять части или весь файл в соответствии с их работой. Это требует знания о замене строки в bash. Хранение данных может быть временным или постоянным, в зависимости от характера данных. Строка файла необходима при замене содержимого файла.
Замена строки в Bash
sed жизненно важен и пригодится для помощи в замене строк в файле сценариями bash. Редактор строк можно использовать по-разному для замены содержимого файла в bash. Альтернативный, но звуковой редактор строк - это awk, который можно задействовать при замене строкового значения из файла с помощью bash. В этой статье на примерах будет показано, как можно заменить содержимое файла в bash. Обратите внимание, что знание шаблонов регулярных выражений также может иметь большое значение при замене строки в bash.
Манипуляция строкой в Bash
При незначительных или простых заменах sed не требуется. Баш может делать манипуляции.
Например:
При замене fosslinux.гифка с .mp4, sed не требуется.
Чтобы выполнить процесс с помощью bash, используйте кодированный текст ниже:
# / bin / bash file_name = "fosslinux.gif "new_extension =" mp4 "# Заменить .гифка с .mp4 generated_file_name = $ file_name /.gif /.$ new_extension echo created_file_name
Замена String с помощью sed
sed можно назвать редактором потока. Sed может заменять строку в файлах. Давайте посмотрим на пример файла с именем singleboardbytes.txt, который содержит следующую информацию:
Foss Linux - отличный обучающий сайт для любого пользователя Linux. Ознакомьтесь со статьями, опубликованными Foss Linux на их сайте.
Теперь в нашем файле нам нужно заменить слово «сайт" с участием "Веб-сайт»И переименуйте файл в фосслинукс.текст.
Понимание синтаксиса sed
sed -i 's / search_string / replace_string /' имя файла sed - это команда, используемая при выполнении вышеуказанного синтаксиса '-я'- используется при модификации содержимого в исходном файле с помощью замены строки всякий раз, когда значение поиска существует в файле. 's'- это подстановочная команда'search_string'- представляет собой строковое значение, которое нужно искать для замены в исходном файле'replace_string'- представляет собой строковое значение, которое используется для замены искомого значения. Строка должна соответствовать строке, найденной командой search_string. 'имя файла'- это имя файла, к которому будет применена замена.
Выполните в своем терминале следующую команду:
sed 's / site / website / g' singleboardbytes.txt> fosslinux.текст
Примечание: вы также можете выполнить указанную выше команду, поместив ее как сценарий bash.
Замена с помощью -я команда
После выполнения команды следующим шагом будет замена с помощью -я команда. -я означает «на месте», что означает, что файл только заменяется, а создание дополнительных файлов не производится. Используя наш пример выше, выполните следующую команду:
sed -i 's / сайт / сайт / g' singleboardbytes.текст
На рисунке ниже вы можете увидеть восклицательный знак с надписью «Файл« / home / tuts / singleboardbytes ».txt изменен на диске.»Это показывает, что изменения были успешно внесены.
На рисунке ниже показан файл, содержащий изменения, внесенные на предыдущем шаге, как в имя файла (singleboardbytes.txt в fosslinux.txt) и слово сайт был изменен на Веб-сайт.
Использование переменной в качестве значений поиска и замен
С небольшой интерполяцией переменные можно использовать для замены строк. В этом случае первый аргумент sed должен использовать двойные кавычки вместо одинарных. Например, ваш код будет похож на следующий:
tuts () local search = $ 1 local replace = $ 2 # Обратите внимание на двойные кавычки sed -i "s / $ search / $ replace / g" singleboardbytes.текст
sed имеет две разновидности, а именно: FreeBSD и Linux sed. Дистрибутивы Linux используют sed Linux, в то время как пользователи OS X используют sed FreeBSD. Эти разновидности совершенно разные, и, следовательно, нельзя передавать команды из одной разновидности sed в другую.
Например, при замене содержимого файла с помощью FreeBSD резервное копирование должно выполняться с использованием .расширение bak. Или вы можете инициировать резервное копирование с использованием пустых пар кавычек сразу после обозначения -i, как показано в синтаксисе bash ниже:
tuts () local search = $ 1 local replace = $ 2 sed -i "" "s / $ search / $ replace / g" singleboardbytes.текст
Если резервное копирование не выполняется при использовании FreeBSD, как показано в синтаксическом коде выше, вы попадете в ошибку, подобную показанной ниже:
sed: 1: «/ Users / user / path / tuts…»: дополнительные символы в конце команды h
Как заменить файл и сопоставить шаблон цифр с помощью команды sed
Если вы успешно запустите скрипт, будет выполнен поиск всего числового содержания, присутствующего в файле. Затем содержимое будет заменено добавлением $ перед числами.
#!/ bin / bash # Проверить, существует ли значение аргумента командной строки, если [$ 1 !знак равно then # Поиск по всей строке, содержащей цифры, и добавление $ sed -i 's / \ b [0-9] \ 5 \ \ b / $ & / g' $ 1 fi
Замена строки с помощью команды awk
В этом случае мы будем использовать команду awk вместо команды sed для замены содержимого файла. Разница между этими командами заключается в том, что команда sed напрямую обновляет исходный файл, чего нельзя сказать о команде awk.
#!/ bin / bash # Проверить, существует ли значение аргумента командной строки, если [$ 1 !знак равно then # Искать во всей строке по дате awk 'sub ("02/06/2020", "12/06/2020") 1' $ 1> temp.txt && mv temp.txt $ 1 fi
Заключение
Приведенные выше примеры жизненно важны для вашего прогресса в изучении того, как заменить строку в Bash. Следовательно, чтобы добиться успеха, вам нужно будет регулярно тренироваться. Поиск и замена строки в файле могут показаться сложными, но вы обнаружите, что это намного проще, если правильно следовать нашим рекомендациям.
Следует отметить, что выполнение команд иногда может показаться более управляемым, но вы должны быть осторожны, чтобы не нанести ущерб sed. Когда вы вводите неправильные команды, вы сломаете свой компьютер, вызывая больше проблем, таких как потеря данных. Следовательно, чтобы быть в безопасности, всегда копируйте и вставляйте код в свой терминал. Это предотвратит орфографические ошибки, которые могут сломать вашу машину. Мы надеемся, что эта статья помогла вам узнать, как заменить строку в bash с помощью этой статьи.