我有.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
答案 0 :(得分:2)
假设str包含[Name]="Account\List\View"
,变量扩展后用空格替换所有\
:
str='[Name]="Account\List\View"'
echo "${str//\\/ }"
$ {参数/模式/字符串}
扩展模式以生成与文件名扩展一样的模式。扩展参数,并将模式与其值的最长匹配替换为字符串。 如果模式以'/'开头,则模式的所有匹配都将替换为字符串。通常只替换第一场比赛。如果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