在shell脚本中查找和替换(特殊字符)
我不熟悉shell脚本: 我有以下建议:在shell脚本中查找和替换(特殊字符),shell,sh,Shell,Sh,我不熟悉shell脚本: 我有以下建议: old=/dev/sda new=/dev/sda5 给定这些变量,我需要从“new”字符串中提取5 我该怎么做呢sedawk 尝试使用: partitionno=$(echo $new | sed 's/$old//g') 要以最少的命令更改获得正确的结果,请尝试: partitionno=$(echo "$new" | sed "s|$old||g") 这里有两个关键点: Shell变量不在单引号内展开。因此,“$old”保留原来的四个字符:$
old=/dev/sda
new=/dev/sda5
给定这些变量,我需要从“new”字符串中提取5
我该怎么做呢<代码>sed<代码>awk
尝试使用:
partitionno=$(echo $new | sed 's/$old//g')
要以最少的命令更改获得正确的结果,请尝试:
partitionno=$(echo "$new" | sed "s|$old||g")
这里有两个关键点:
“$old”
保留原来的四个字符:$
,o
,l
和d
。对于要展开的shell变量,请使用双引号sed“s/$old//g”
仍然无法工作,因为斜杠太多了。替换命令使用三个斜杠。shell展开后,$old
,有五个斜杠。解决方案是为替换命令使用不同的分隔符。我在上面选择了|
,因为|
不太可能在文件名中$ old=/dev/sda
$ new=/dev/sda5
$ echo "${new#$old}"
5