2013-02-07 77 views
0

我正在尝试使用vim批量修复一些.scc文件,并且需要将替代sting传递给它。多个Bash Shell扩展问题 r

我试图用vim -E通过这条线":s/\r/\r/g"

我试图嵌入单个字符作为引号内的变量,但\r搞乱它。

任何意见,将不胜感激。

+4

您试图用'\ r'替换'\ r'? –

+2

这听起来像是[XY问题]的可能实例(http://meta.stackexchange.com/q/66377/172535)。你究竟想要做什么? – ruakh

+0

我也需要在下一个传递中使用vim,因为我需要应用“:fileformat = dos设置文件 – user2051964

回答

1

猜测你真的想做什么,因为它听起来不像是一次性的变化。以下内容将删除所有\r s。


注意它就地编辑 - 无需重定向等


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

如果你想用一个单一的\r来代替它做

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

Perl会保留一个备份,但你应该如此。它不是使用vim,但也许你不应该想。

0

在Vim中,您必须在搜索部分使用\n,在替换部分中使用\r。但用\r代替\n听起来很像对我无所事事。

无论如何,启动Vim只是为了替换可能有点太多了。你可以使用sed

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

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

+0

问题是我们获取PC上的文件大概是在Mac上疯狂的,\ r代表回车。他们没有正确格式化的PC读取该文件作为一个单一的“^ M”在返回应该是。sed的问题,我认为它是忽略^ M的。 – user2051964

0

明白了。 ':s/\\ r/\\ r/g'

我只是需要正确的引用级别。我前面提到的问题是,我们得到的文件包括在Mac上制作的PC双行换行符,PC​​无法正确读取它们。因此,使用sed到s/\ r/\ r \ n/g并不是真的有效,也许我可以更多地探索它。但我认为将这些传递给vim会有所帮助。我必须使用vim发送:set format = dos到文件。

谢谢大家。