12

是否可以使用 shell 在文件中搜索然后替换一个值?当我安装服务时,我希望能够在配置文件中搜索出一个变量,然后在该值中替换/插入我自己的设置。

4

7 回答 7

29

当然,您可以使用 sed 或 awk 执行此操作。sed 示例:

sed -i 's/Andrew/James/g' /home/oleksandr/names.txt
于 2012-06-01T20:16:53.590 回答
9

您可以使用 sed 执行搜索/替换。我通常从 bash shell 脚本执行此操作,并将包含要替换的值的原始文件移动到一个新名称,然后运行 ​​sed 将输出写入我的原始文件名,如下所示:

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

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

如果您不指定输出,则替换将转到标准输出。

于 2012-06-01T22:23:34.043 回答
2
sed -i 's/variable/replacement/g' *.conf
于 2012-06-01T20:18:30.050 回答
1

您可以使用 sed 来执行此操作:

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

sed 可能在每个类似 unix 的系统上都可用。如果要替换多个出现,可以将 ag 添加到 s 命令:

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

请小心,因为如果您没有正确指定 toreplace-value,这可能会完全破坏您的配置文件。sed 还支持搜索和替换中的正则表达式。

于 2012-06-01T20:17:54.027 回答
1

查看UNIX 电动工具 awk、sed、grep和使用 Perl就地编辑文件。

于 2012-06-01T20:23:37.470 回答
1
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
于 2014-06-01T22:14:23.457 回答
0

通常为此使用 awk 或 sed 之类的工具。

$ sed -i 's/ugly/beautiful/g' /home/bruno/old-friends/sue.txt
于 2012-06-01T20:17:19.007 回答