替换所有实例而不更改文件结尾

时间:2018-05-01 19:23:50

标签: macos sed terminal

要在当前目录中具有特定扩展名的所有文件中替换所有出现的单词,我使用此命令:

find . -type f -name '*.zz' -exec sed -i '' "s/replace_this/with_this/" {} +

问题是它将\n添加到未以\n结尾的文件的末尾。现在不要误会我的意思,我喜欢\n终止文件和下一个人一样多。但是我不想在我的git diff中进行所有这些更改。什么是运行的命令,它可以做同样的事情但不触及文件结尾?

顺便说一句,我正在使用emacs与建议 - 射弹,所以如果有一个方便的工具,那就没关系了。

macOS 10.13.4

1 个答案:

答案 0 :(得分:1)

尝试perl 而不是sed,使用以下内容:

perl -pi -e 's/replace_this/with_this/"

在你的情况下:

find . -type f -name '*.zz' -exec perl -pi -e  "s/replace_this/with_this/" {} +