Bash Shell扩展问题,出现多个\r\n

Bash Shell扩展问题,出现多个\r\n,bash,shell,vim,quoting,Bash,Shell,Vim,Quoting,我正在尝试使用vim批量修复一些.scc文件,需要向其传递替换sting 我正试图使用vim-E通过这一行“:s/\r/\r/g” 我曾尝试将单个字符作为变量嵌入引号中,但\r将其搞乱 任何建议都将不胜感激。猜测您真正想做什么,因为这听起来不像是一次性的改变。以下内容将删除所有\rs 注意它执行就地编辑-无需重定向等 如果要将其替换为单个\r请执行以下操作 perl -i.bak -p -e 's/\r+/\r/g' filename(s)... Perl将保留一个备份,但您也应该这样

我正在尝试使用vim批量修复一些.scc文件,需要向其传递替换sting

我正试图使用
vim-E
通过这一行
“:s/\r/\r/g”

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


任何建议都将不胜感激。

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


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


如果要将其替换为单个
\r
请执行以下操作

 perl -i.bak -p -e 's/\r+/\r/g' filename(s)... 
Perl将保留一个备份,但您也应该这样做


它没有使用
vim
,但是您可能不想使用它。

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

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

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

阅读
$man sed
了解更多信息。

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

我只需要正确的报价。我之前提到的问题是,我们得到的文件可能包括在mac上制作的PC双线中断,而PC无法正确读取它们

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


谢谢大家。

您试图用
\r
替换
\r
?这听起来像是一个可能的例子。您实际要做的是什么?在下一步中,我确实需要使用vim,因为我需要将“:set fileformat=dos应用于文件。问题是我们在Mac上获取PC的文件,\r代表回车符。但由于这些文件的格式不正确,PC会将文件作为带有“^M”的单行读取“回报应该在哪里。sed的问题是,我认为它忽略了^M。
$ sed -i.orig 's/foo/bar/' foo.txt