![]() |
1
39
我可以使用vista和cygwin 1.7.0重现这种行为。
两个反斜杠变为shell中的一个反斜杠,然后在sed中,该反斜杠将转义中间分隔符正斜杠。
其中三个:前两个变成了壳中的一个,然后从塞德的第三个逃脱。
四:每对在壳中变成一对,然后第一对在sed中逃逸第二对。
编辑:
哦,我忘了说单引号和双引号对我来说都是一样的(
|
![]() |
2
10
你的外壳(可能是bash)正在进行自己的逃跑,这让你很困惑。您可以使用echo命令查看正在传递的内容,或者很容易编写自定义程序(通常称为“showargs”或类似程序): $ echo "s/\\\/\//" s/\\/\// $ echo "s/\\/\//" s/\/\// 您还可以使用单引号,这在bash中被区别对待。 |
![]() |
3
6
这是由于
Posix
指定如何
换言之,
所以,如果
打趣之后,
用同样的理由,当
|
![]() |
4
4
请举一个你未来拥有的例子。在sed中,假设您要替换a“
你只需要逃避一次。 编辑:以@op为例,由于您使用的是cmd.exe而不是bash/ksh,因此cmd.exe不喜欢单引号。我不能提出你的方案。这适用于我在Windows上使用2个斜杠的GNU SED 如
|
![]() |
5
1
在我的Cygwin版本中,它的工作方式和最初的海报上说的一样,但是,如果我使用单引号,它的工作方式(通常)会有所不同。 $ echo "sample_input\whatever" | sed 's/\\/\//' sample_input/whatever $ echo "sample_input\whatever" | sed "s/\\/\//" sed: -e expression #1, char 7: unterminated `s' command 六羟甲基三聚氰胺六甲醚。。 |
![]() |
6
0
我想,你假设
也,
所以
|
![]() |
7
0
在cygwin上用两个反斜杠替换一个反斜杠需要以下表达式: SED-E“S \ \ \ \ \ \ \ \ \ \ G” |
![]() |
John Smith · 在特定行的末尾添加文本 3 年前 |
![]() |
Waddah Shamroukh · 使用sed将字符串替换为变量 3 年前 |
![]() |
DAG · bash使用sed在文件的第一个位置插入单词 3 年前 |
![]() |
nickcrv06 · 在两个常量字符串之间提取单词 3 年前 |
![]() |
DevOps_Engg · 使用sed提取路径值子字符串 3 年前 |