所以我想创建一个脚本,它需要3个参数 - 文件路径,替换确切词以及替换它的内容。如何创建这样的事情?如何使用.SH文件脚本替换文本文件中的文本?
一般来说,我want6它有API像sudo script.sh "C:/myTextDoc.xml" "_WORD_TO_REPLACE_" "WordTo Use"
所以我想创建一个脚本,它需要3个参数 - 文件路径,替换确切词以及替换它的内容。如何创建这样的事情?如何使用.SH文件脚本替换文本文件中的文本?
一般来说,我want6它有API像sudo script.sh "C:/myTextDoc.xml" "_WORD_TO_REPLACE_" "WordTo Use"
像这样的事情?
#!/bin/bash
sed -e "s/$2/$3/g" <$1 >$1.$$ && cp $1.$$ $1 && rm $1.$$
或者,您可以使用单个命令
sed -i -e "s/$2/$3/g" $1
燕建议。我通常自己使用第一种形式。我看到系统不支持-i
(SunOS)。
这将在作为第一个参数传递的文件中用第三个参数替换第二个参数的所有实例。例如,./replace file oldword newword
你并不需要一个脚本,一个简单的sed会做(如果你在cygwin下或POSIX兼容的操作系统上运行):
sed -i '' 's/_WORD_TO_REPLACE_/WordTo Use/' "C:/myTextDoc.xml"
红宝石(1.9+)
$ ruby -i.bak -ne 'print $_.gsub(/WORD_TO_REPLACE/,"New Word")' /path/to/file
sed能够在不需要手动创建临时文件的情况下编辑文件。 – yan 2011-03-29 19:23:52
而不是3个命令和一个临时文件“sed -i”s/$ 2/$ 3/g“$ 1”可以正常工作。 – anubhava 2011-03-29 19:26:12
@yan Neat,我不知道:-) – Jonathan 2011-03-29 19:26:17