【问题标题】:how to replace string with '$' in unix using sed如何使用 sed 在 unix 中用 '$' 替换字符串
【发布时间】:2012-11-28 02:37:09
【问题描述】:
我正在尝试使用以下语句将$HOME/findreplace/ 目录中所有文件中的字符串######### 替换为$,但出现sed: Function s_#########_ cannot be parsed. 错误。
提前感谢您的帮助。
for file in $HOME/findreplace/*.*
do
sed -e "s_#########_$_g" $file> /tmp/tempfile.tmp
mv /tmp/tempfile.tmp $file
echo "Modified: " $file
done
【问题讨论】:
标签:
unix
search
sed
replace
【解决方案1】:
你可以这样做:
for file in $HOME/findreplace/*.*
do
sed -i 's/#########/\$/g' "$file"
echo "Modified: $file"
done
说明:
- 使用
/ 代替之前的 _ 来分隔要匹配的模式和要替换的模式。
- 使用
\ 转义$ 字符
- 使用单引号而不是双引号以避免 bash 自动扩展某些内容(单引号括起来的字符串将按字面意思解释)
- 使用
sed 的 -i 选项进行就地编辑,这样您就可以避免使用临时文件。
- 您几乎总是希望将变量(例如
$file)用双引号引起来。