【问题标题】:How to replace all occurrences in 1 file with sed?如何用 sed 替换 1 个文件中的所有匹配项?
【发布时间】:2014-03-02 01:39:38
【问题描述】:

我需要替换所有出现并写回同一个文件

我试过了:

sed 's/one/two/g' file.txt

这个打印出来但不写入文件

我也试过

sed 's/one/two/g' file.txt>file.txt

这会导致空文件

sed -i 's/one/two/g' file.txt

给出错误:sed: 1: "file.txt": invalid command code f

有什么想法吗?

【问题讨论】:

    标签: linux shell sed


    【解决方案1】:

    对于 Mac:使用 -i.bak 添加备份文件

    sed -i.bak 's/one/two/g' file.txt
    

    或者

    sed -i '' 's/one/two/g' file.txt
    

    对于 Linux: 使用 sed -i on 进行 infile 替换

    sed -i 's/one/two/g' file.txt
    

    您还可以使用 tmp 文件执行以下操作:

    sed 's/one/two/g' file.txt > tmp.txt && mv tmp.txt file.txt
    

    【讨论】:

    • mac7:~ $ sed -i 's/one/two/g' file.txt sed: 1: "file.txt": 无效命令代码 f
    • @user300675 你可以在 Mac 上给 -i.bak
    • 另一种方法是在 -i 之后添加''
    猜你喜欢
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 2022-01-08
    • 1970-01-01
    • 2011-03-22
    相关资源
    最近更新 更多