用空格替换\

时间:2018-01-22 15:50:04

标签: linux bash unix

我有.sh个文件,其中一个变量是admFilter=${10},我从.bat文件调用中获得了此变量的值,这样做的好处是'工作正常。当我echo "$admFilter"时,我看到输出 - :[Name]="Account\List\View"(它完整的一个值)

我真正想要的是删除"\"这个并替换为白色空格,因此最终输出将是[Name]="Account List View"',然后将结果存储到另一个变量中,我是我没有得到如何使用SED命令(之前从未使用过),我也尝试了tr命令,但它结合了给出[Name]="AccountListView"'的字符串。任何人都可以帮助我如何获得所需的输出,如果可能的话,在sed上解释一下?谢谢

操作系统版本 - :SunOS 5.10 Generic_150400-52 sun4v sparc SUNW,T5240

2 个答案:

答案 0 :(得分:2)

假设str包含[Name]="Account\List\View",变量扩展后用空格替换所有\

str='[Name]="Account\List\View"'
echo "${str//\\/ }"

来自bash manual

  

$ {参数/模式/字符串}

     

扩展模式以生成与文件名扩展一样的模式。扩展参数,并将模式与其值的最长匹配替换为字符串。 如果模式以'/'开头,则模式的所有匹配都将替换为字符串。通常只替换第一场比赛。如果pattern以'#'开头,则它必须在参数的扩展值的开头匹配。如果pattern以'%'开头,则它必须在参数的扩展值的末尾匹配。如果string为null,则删除pattern的匹配,并且可以省略/ following模式。如果启用了nocasematch shell选项(请参阅Shopt Builtin中的shopt说明),则执行匹配而不考虑字母字符的情况。如果参数是'@'或'*',则替换操作依次应用于每个位置参数,并且扩展是结果列表。如果parameter是一个用'@'或'*'下标的数组变量,则替换操作将依次应用于数组的每个成员,并且扩展是结果列表。

答案 1 :(得分:1)

作为class "search and replace"参数扩展的替代方法(在其他答案中有解释),您还可以使用 bash

tr

echo '[Name]="Account\List\View"' | tr '\\' ' ' [Name]="Account List View" (使用s command):

sed

在这两种情况下,只需确保转义反斜杠(使用反斜杠):echo '[Name]="Account\List\View"' | sed 's/\\/ /g' [Name]="Account List View"

此外,要将其存储在另一个变量\\中,从y中的值开始:

x