带有多个\ r \ n的Bash Shell扩展问题

时间:2013-02-07 18:52:23

标签: bash shell vim quoting

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

我正在尝试使用vim -E来传递此行":s/\r/\r/g"

我尝试将单个字符作为变量嵌入引号中,但\r将其弄乱。

任何建议都将受到赞赏。

3 个答案:

答案 0 :(得分:1)

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


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


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

如果您想用单个\r替换

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

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

它没有使用vim,但也许你不应该这样做。

答案 1 :(得分:0)

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

无论如何,仅仅为了替换而启动Vim可能有点太多了。您可以使用sed

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

阅读$ man sed了解详情。

答案 2 :(得分:0)

得到了它。 ':S / \\ R / \\ R / G'

我只需要正确的报价水平。我之前提到的问题是,我们得到的文件包含可在Mac上制作的PC双线断点,并且PC无法正确读取它们。

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

谢谢大家。