如何使用.SH文件脚本替换文本文件中的文本?

时间:2011-03-29 19:19:04

标签: regex linux scripting replace

所以我想创建一个带有3个参数的脚本 - 文件路径,要替换的确切单词以及替换它的内容。如何创造这样的东西?

一般来说,我希望它有像sudo script.sh "C:/myTextDoc.xml" "_WORD_TO_REPLACE_" "WordTo Use"

这样的api

3 个答案:

答案 0 :(得分:4)

你不需要一个脚本,一个简单的sed会做(如果你在cygwin或兼容POSIX的操作系统下运行):

sed -i '' 's/_WORD_TO_REPLACE_/WordTo Use/' "C:/myTextDoc.xml"

答案 1 :(得分:2)

这样的东西?

#!/bin/bash
sed -e "s/$2/$3/g" <$1 >$1.$$ && cp $1.$$ $1 && rm $1.$$

或者,您可以使用单个命令

sed -i -e "s/$2/$3/g" $1
Yan建议说。我通常自己使用第一种形式。我见过不支持-i的系统(SunOS)。

这将在第一个传递的文件中用第三个参数替换第二个参数的所有实例。例如,./replace file oldword newword

答案 2 :(得分:0)

红宝石(1.9 +)

$ ruby -i.bak -ne 'print $_.gsub(/WORD_TO_REPLACE/,"New Word")' /path/to/file