0

我正在尝试使用 vim 批量修复一些 .scc 文件,并且需要将替换字符串传递给它。

我正在尝试vim -E通过这条线":s/\r/\r/g"

我尝试将单个字符作为变量嵌入引号中,但把\r它搞砸了。

任何意见,将不胜感激。

4

3 回答 3

1

猜测你真正想做的事情,因为这听起来不像是一次性的改变。以下将删除所有\rs。


注意 它会进行就地编辑 - 无需重定向等。


 perl -i.bak -p -e 's/\r+//g' filename(s)... 

如果你想用一个\r做替换它

 perl -i.bak -p -e 's/\r+/\r/g' filename(s)... 

Perl 会保留备份,但你也应该这样做。

它没有使用vim,但也许你不应该想要。

于 2013-02-07T19:19:24.887 回答
0

在 Vim 中,您必须\n在搜索部分和\r替换部分中使用。但是用\n听起来\r很像对我什么都不做。

无论如何,仅仅为了替代而启动 Vim 可能有点过分了。你可以使用sed

$ sed -i.orig 's/foo/bar/' foo.txt

阅读$ man sed以获取更多信息。

于 2013-02-07T19:31:15.107 回答
0

知道了。':s/\\r/\\r/g'

我只需要正确的报价水平。我之前提到的问题是,我们得到的文件可能包含在 Mac 上制作的 PC 双换行符,而 PC 无法正确读取它们。

因此,出于某种原因,使用 sed 到 s/\r/\r\n/g 并没有真正起作用,也许我可以进行更多探索。但我认为将这些传递给 vim 会有所帮助。我必须使用 vim 将 :set format=dos 发送到文件。

谢谢大家。

于 2013-02-08T18:45:35.527 回答