【问题标题】:Replace all occurrences without changing file endings替换所有匹配项而不更改文件结尾
【发布时间】:2018-10-11 20:23:23
【问题描述】:

要将当前目录中具有特定扩展名的所有文件中的所有单词替换为另一个单词,我使用以下命令:

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

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

顺便说一句,我正在使用带有律师弹丸的 emacs,所以如果那里有一个方便的工具,那就没问题了。

macOS 10.13.4

【问题讨论】:

  • 请在运行命令之前/之后包含文件示例。
  • @l'L'l 在它没有最终换行符之前,在它之后。例如echo -n hello > a.txt && echo hello > b.txt && hexdump -C a.txt && hexdump -C b.txt

标签: macos sed terminal


【解决方案1】:

试试perl pie,而不是sed,用这样的东西:

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

在你的情况下:

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

【讨论】:

    猜你喜欢
    • 2016-05-07
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 2012-05-18
    相关资源
    最近更新 更多