【问题标题】: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)用双引号引起来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-01
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 2016-05-01
      • 2020-07-28
      • 1970-01-01
      相关资源
      最近更新 更多