GNU sed – 查找或replace空格或新行。 为什么这不起作用? v3.02 vs v4.2

C:\crp\cnp>sed -V GNU sed version 3.02 Copyright (C) 1998 Free Software Foundation, Inc....... C:\crp\cnp>type ff aaa aaa 

尝试用空格replace“a”。

 C:\crp\cnp>type ff | sed -es/a/\d032/g d032 d032 d032 d032 d032 d032 

为什么不工作?

我不介意我是find还是replace空格或换行。我只是想能够指定它们。 它似乎没有工作,我不知道为什么。

(用freplace空格或空格不起作用)

 C:\crp\cnp>echo aa | sed s/\d32/f/ aa 

注意,它似乎可能在4.2,但我对3.02'COS感兴趣,这是与unxutils捆绑在一起的版本http://unxutils.sourceforge.net/

更新到问题 – 感谢paxdiablo的提示..关于gnu32win,我现在使用,而不是unxutils。 这是更新的。 我现在可以指定空格。 和鬼狗,paxdiablo,我看到双引号。 我很好用\ d(使用4.2)或空格指定空格。 但是,我仍然不能删除新的行

C:\ crp>键入ff | sed -e“s / \ r \ n / f / g”

aa

b bb

c cc

C:\ crp>键入ff | sed -e“s / \ d013 \ d010 / f / g”

aa

b bb

c cc

C:\ crp>键入ff | sed -e“s / \ x0D \ x0A / f / g”

aa

b bb

c cc

Solutions Collecting From Web of "GNU sed – 查找或replace空格或新行。 为什么这不起作用? v3.02 vs v4.2"

为什么不只是使用空格字符本身,而不是一些有趣的编码? 如:

 sed -e 's/a/ /g' 

对于什么是值得的,你给的命令也不能在4.2.1中工作,但是如果你加了引号,那么它的确行得通。 所以我建议你把它改成:

 sed -e 's/a/\d032/g' 

道歉,我刚刚注意到你正在运行Windows,所以你可能有CygWin或GnuWin32(或同等)。

在Windows下引号的工作方式不同,所以你应该尝试两件事情。 首先是使用"而不是'引号:

 sed -e "s/a/ /g" 

否则,在Windows中的转义字符是^所以像这样的东西应该能够逃脱空间:

 sed -es/a/^ /g 

顺便说一句,如果可能的话,我会考虑切换到GnuWin32,它有更新的sed版本(例如)。 从2003年开始,UnxUtils并没有像你链接到的网页那样有一个更新。 你可以从这里获得单独的软件包。 您正在寻找包含大量UNIX文本处理工具包的coreutils

但是,如果你坚持使用UnxUtils,我只需要使用实际的空间而不是十进制代码,然后使用tr去掉新的行:

 tr -d "\n" 

假设当然, textutils中的tr可以处理这个语法:-)

我在Win XP上遇到了同样的问题,当试图打印新行“\ n”时,双引号不起作用。 解决方法是使用http://unxutils.sourceforge.net/中的新UnxUpdates.zip。它正确地使用“\ n”。

Sed版本状态:GNU sed版本4.0.7

在Windows上,使用双引号

 sed "s/a/\d032/g" file 

要不就

 sed "s/a/ /g" file