更换所有'/';与'\/';在bash/shell脚本中
这可能非常简单,但我一直坚持在shell/bash中完成这项工作。 我有类似“更换所有'/';与'\/';在bash/shell脚本中,bash,shell,Bash,Shell,这可能非常简单,但我一直坚持在shell/bash中完成这项工作。 我有类似“a/b/c/d”的输入,我想用“\/”替换所有“/”,输出将是“a/b/c/d” 另一个例子是12.12.12.12/32>>12.12.12\/32 任何帮助都将不胜感激。根据您访问要替换的文本或字符串的方式,类似的操作可能会奏效。您必须在sed命令中转义/和\ var='a/b/c/d' echo "$var" | sed 's/\//\\\//g' 根据您访问要在其中进行替换的文本或字符串的方式,类似的操作可能
a/b/c/d
”的输入,我想用“\/
”替换所有“/
”,输出将是“a/b/c/d”
另一个例子是12.12.12.12/32
>>12.12.12\/32
任何帮助都将不胜感激。根据您访问要替换的文本或字符串的方式,类似的操作可能会奏效。您必须在sed命令中转义
/
和\
var='a/b/c/d'
echo "$var" | sed 's/\//\\\//g'
根据您访问要在其中进行替换的文本或字符串的方式,类似的操作可能会起作用。您必须在sed命令中转义
/
和\
var='a/b/c/d'
echo "$var" | sed 's/\//\\\//g'
您可以使用
bash
的参数扩展:
$ input="a/b/c/d"
$ echo "${input//\//\\/}"
a\/b\/c\/d
给定一个变量
input
,${input//xxx/yyy}
生成input
的内容,每个xxx
替换为yyy
。这里的xxx
是\/
(/
必须转义才能与下一个/
)和yyy
是\/
(\/
转义为\
)您可以使用bash
的参数扩展:
$ input="a/b/c/d"
$ echo "${input//\//\\/}"
a\/b\/c\/d
给定一个变量input
,${input//xxx/yyy}
生成input
的内容,每个xxx
替换为yyy
。这里的xxx
是\/
(/
必须进行转义,以避免与下一个/
)混淆,yyy
是\/
(\//code>转义为\
)仅使用bash
var='a/b/c/d'
echo "${var//\//\\/}"
仅使用bash
var='a/b/c/d'
echo "${var//\//\\/}"
这样做可以:
echo "12.12.12.12/32" |sed 's,/,\\/,g'
输出:
12.12.12.12\/32
在这种情况下,使用除/
之外的分隔符,正如我在上面的示例中使用的,
。例如,您可以使用:#
,?
…等
echo "12.12.12.12/32" |sed 's,/,\\/,g'
输出:
12.12.12.12\/32
在这种情况下,使用除/
之外的分隔符,正如我在上面的示例中使用的,
。您可以使用例如:#
,?
…等当前,您的问题不清晰或不可理解。请使用格式化工具显示原始字符。对于初学者,您可以将示例部分放在反斜杠之间。“…”
我编辑了这个问题以使反斜杠可见(正如@chryss所建议的)——如果这不是预期的,请恢复编辑。为什么要这样做?这并不是为了让sed可以接受,是吗?确切地说,我需要它只是为了让sed可以接受…还有其他方法吗?我可能根本不需要替换?是的,使用另一个分隔符,例如,sed“s#$foo#$bar#g”
目前,你的问题不清晰或不可理解。请使用格式化工具显示原始字符。对于初学者,您可以将示例部分放在反斜杠之间。“…”
我编辑了这个问题以使反斜杠可见(正如@chryss所建议的)——如果这不是预期的,请恢复编辑。为什么要这样做?这并不是为了让sed可以接受,是吗?确切地说,我需要它只是为了让sed可以接受…还有其他方法吗?我可能根本不需要替换?是的,使用另一个分隔符,例如sed“s#$foo#$bar#g”
echo“$var”
,而不是echo$var
;看见如果用户的输入是*/*/3/4
,将扩展保留为不带引号将导致输出包含一个文件列表。好的,出于样式原因,这很公平。我已经改变了。然而,我一点也不希望这一部分与OP的脚本相关——我只是添加了它来挂起sed命令,在我提供输入的情况下,我控制它。如果我们是一个教学资源,那么演示可以安全地广泛应用的实践是很重要的。ABS在bash社区被视为如此贫乏的资源的部分原因与其说是完全不准确(尽管有一些),不如说是展示不安全做法的例子;这些实践往往会被复制和应用,即使它们只是偶然出现,也会导致人们从ABS那里学到编写错误代码。echo“$var”
,而不是echo$var
;看见如果用户的输入是*/*/3/4
,将扩展保留为不带引号将导致输出包含一个文件列表。好的,出于样式原因,这很公平。我已经改变了。然而,我一点也不希望这一部分与OP的脚本相关——我只是添加了它来挂起sed命令,在我提供输入的情况下,我控制它。如果我们是一个教学资源,那么演示可以安全地广泛应用的实践是很重要的。ABS在bash社区被视为如此贫乏的资源的部分原因与其说是完全不准确(尽管有一些),不如说是展示不安全做法的例子;这些实践往往会被复制和应用,即使它们的出现只是偶然的,也会导致人们从ABS学习编写糟糕的代码。