Find and replace in shell scripting

2019-03-11 12:38发布

Is it possible to search in a file using shell and then replace a value? When I install a service I would like to be able to search out a variable in a config file and then replace/insert my own settings in that value.

7条回答
放我归山
2楼-- · 2019-03-11 12:41

You can use sed to do this:

sed -i 's/toreplace/yoursetting/' configfile 

sed is probably available on every unix like system out there. If you want to replace more than one occurence you can add a g to the s-command:

sed -i 's/toreplace/yoursetting/g' configfile 

Be careful since this can completely destroy your configfile if you don't specify your toreplace-value correctly. sed also supports regular expressions in searching and replacing.

查看更多
甜甜的少女心
3楼-- · 2019-03-11 12:49
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
查看更多
做自己的国王
4楼-- · 2019-03-11 12:52

You can use sed to perform search/replace. I usually do this from a bash shell script, and move the original file containing values to be substituted to a new name, and run sed writing the output to my original file name like this:

#!/bin/bash
mv myfile.txt myfile.txt.in

sed -e 's/PatternToBeReplaced/Replacement/g' myfile.txt.in > myfile.txt.

If you don't specify an output, the replacement will go to stdout.

查看更多
等我变得足够好
5楼-- · 2019-03-11 12:52

Look at the UNIX power tools awk, sed, grep and in-place edit of files with Perl.

查看更多
Root(大扎)
6楼-- · 2019-03-11 12:55

Generally a tool like awk or sed are used for this.

$ sed -i 's/ugly/beautiful/g' /home/bruno/old-friends/sue.txt
查看更多
干净又极端
7楼-- · 2019-03-11 13:02
sed -i 's/variable/replacement/g' *.conf
查看更多
登录 后发表回答