Можно ли искать в файле с помощью оболочки, а затем заменить значение? Когда я устанавливаю службу, я хотел бы иметь возможность искать переменную в файле конфигурации, а затем заменять/вставлять мои собственные настройки в это значение.
Найти и заменить в сценариях оболочки
Ответ 1
Конечно, вы можете сделать это с помощью sed или awk. Пример sed:
sed -i 's/Andrew/James/g' /home/oleksandr/names.txt
Ответ 2
Вы можете использовать sed для выполнения поиска/замены. Обычно я делаю это из оболочки bash script и перемещаю исходный файл, содержащий значения, которые нужно заменить на новое имя, и запускайте sed, записывая вывод в исходное имя файла следующим образом:
#!/bin/bash
mv myfile.txt myfile.txt.in
sed -e 's/PatternToBeReplaced/Replacement/g' myfile.txt.in > myfile.txt.
Если вы не укажете вывод, замена будет передаваться в стандартный вывод.
Ответ 3
sed -i 's/variable/replacement/g' *.conf
Ответ 4
Вы можете использовать sed для этого:
sed -i 's/toreplace/yoursetting/' configfile
sed, вероятно, доступен в любой UNIX-системе. Если вы хотите заменить несколько случаев, вы можете добавить g в команду s:
sed -i 's/toreplace/yoursetting/g' configfile
Будьте осторожны, так как это может полностью уничтожить ваш конфигурационный файл, если вы не указали правильное значение вашего файла. sed также поддерживает регулярные выражения при поиске и замене.
Ответ 5
Посмотрите инструменты для электроники UNIX awk, sed, grep и редактирование файлов на месте с помощью Perl.
Ответ 6
filepath="/var/start/system/dir1"
searchstring="test"
replacestring="test01"
i=0;
for file in $(grep -l -R $searchstring $filepath)
do
cp $file $file.bak
sed -e "s/$searchstring/$replacestring/ig" $file > tempfile.tmp
mv tempfile.tmp $file
let i++;
echo "Modified: " $file
done
Ответ 7
Обычно для этого используется инструмент типа awk или sed.
$ sed -i 's/ugly/beautiful/g' /home/bruno/old-friends/sue.txt
Ответ 8
Не могли бы вы также объяснить команду? также, возможно, дать ссылку что значит sed? и -i и s и g? - Даниил 19 июня в 11:09
К сожалению, у меня нет достаточно представителей, чтобы ответить на ваш комментарий, поэтому я должен сделать это таким образом. Это лучше объяснено в этой теме:
Найти и заменить внутри текстового файла с помощью команды Bash