Sales.txt
Дата Количество Область
01.01.2020 60000 Дакка
02.10.2020 76000 Раджшахи
21.03.2020 54000 Хулна
15.04.2020 78000 Чандпур
17.05.2020 45000 Богра
06.02.2020 67000 Комилла
Заменить строку в файле командой `sed`
Базовый синтаксис команды ` sed Команда для замены конкретной строки в файле приведена ниже.
Синтаксис
sed -я 's / search_string / replace_string /'имя файла
Каждая часть приведенного выше синтаксиса объясняется ниже.
'-я' Параметр используется для изменения содержимого исходного файла с заменой строки, если строка поиска существует в файле.
‘S’ указывает заменяющую команду.
'Search_string' содержит строковое значение, которое будет искать в файле для замены.
«Replace_string» содержит строковое значение, которое будет использоваться для замены содержимого файла, соответствующего 'Search_string' ценить.
'имя файла' содержит имя файла, в котором будут применяться поиск и замена.
Пример 1. Замена файла командой «sed»
В следующем скрипте текст для поиска и замены будет взят у пользователя. Если строка поиска существует в «Sales.txt», она будет заменена строкой замены. Здесь будет выполняться поиск с учетом регистра.
#! / bin / bash# Назначить имя файла
имя файлазнак равно'Sales.txt'
# Берем строку поиска
читать -п 'Введите строку поиска:'поиск
# Берем заменяемую строку
читать -п 'Введите заменяемую строку:'заменять
если [[ $ поиск !знак равно'' && $ заменить !знак равно'' ]];тогда
sed -я 's /$ поиск/$ заменить/ ' $ filename
быть
Выход
Пример 2. Замена файла командой «sed» с флагом «g» и «i»
Следующий сценарий будет работать так же, как и предыдущий пример, но в строке поиска будет производиться глобальный поиск флага «g», а поиск без учета регистра будет выполняться для флага «i».
#! / bin / bash# Берем строку поиска
читать -п 'Введите строку поиска:'поиск
# Берем заменяемую строку
читать -п 'Введите заменяемую строку:'заменять
если [[ $ поиск !знак равно'' && $ заменить !знак равно'' ]];тогда
sed -я 's /$ поиск/$ заменить/давать' 1 доллар
быть
Выход
Пример 3. Замена файла командой «sed» и шаблоном совпадающих цифр
Следующий скрипт выполнит поиск всего числового содержимого в файле и заменит его, добавив ‘$’ символ в начале чисел.
#! / bin / bash# Проверяем, существует ли значение аргумента командной строки
если [ 1 доллар !знак равно'' ];тогда
# Поиск по всей строке, содержащей цифры, и добавление $
sed -я 's / b [0-9] {5 } b / $ & / g' 1 доллар
быть
Выход
Заменить строку в файле командой `awk`
‘ awk ’ команда - это еще один способ заменить строку в файле, но эта команда не может обновить исходный файл напрямую, как ' но команда.
Пример 4. Заменить файл командой «awk»
Следующий скрипт сохранит обновленное содержимое в temp.txt файл, который будет переименован в исходный файл.
#! / bin / bash# Проверяем, существует ли значение аргумента командной строки
если [ 1 доллар !знак равно'' ];тогда
# Искать во всей строке по дате
awk '{sub ('02 / 06/2020', '12.06.2020')} 1 ' 1 доллар >temp.txt&& мвtemp.txt1 доллар
быть
Выход
Заключение
В этой статье показано, как использовать сценарии bash для замены определенных строк в файле. Задача по замене строки в файле станет для вас проще после отработки приведенных выше примеров.