如何在shell脚本中搜索字符串并将其放入变量中?
只是想知道是否有人能帮我。我有一个文件,其中包含一行:如何在shell脚本中搜索字符串并将其放入变量中?,shell,sed,grep,Shell,Sed,Grep,只是想知道是否有人能帮我。我有一个文件,其中包含一行: W32i APP - 8.0.0.xxxxx shp 6SFE25~1.EXE xxxxx是5位数字,每次数字都不同。我希望能够搜索xxxxx并将其放入变量中,以便使用此变量。我是否使用grep和sed?a.txt #!/bin/sh read < a.txt [[ $REPLY =~ 8.0.0.([^\ ]*) ]] echo ${BASH_REMATCH[1]} 代码 num=$(
W32i APP - 8.0.0.xxxxx shp 6SFE25~1.EXE
xxxxx是5位数字,每次数字都不同。我希望能够搜索xxxxx并将其放入变量中,以便使用此变量。我是否使用grep和sed?a.txt
#!/bin/sh
read < a.txt
[[ $REPLY =~ 8.0.0.([^\ ]*) ]]
echo ${BASH_REMATCH[1]}
代码
num=$(
输出
xxxxx
您将很高兴花时间了解变量修饰符(如${num#xxx}、${num##xx}、${num%x}、${num%%x}
的工作方式)之间的差异。高级shell还支持类似替换的sed
,${num/0/9}
和${num//0/9}
IHTH
经过测试它可以工作!这条评论真的帮助我学习,非常感谢!:)要查看
%%
和%%
修饰符之间的差异,此代码是一个很好的示例,即仅使用%%
会导致xxxxx shp
,因为删除从右侧开始,找到第一个“”,然后删除到最后。使用%%
,删除从右侧开始,然后查找所有“”(移到右侧),然后删除右侧的所有内容,只留下xxxxx
。祝大家好运。我正要问你们区别,你们刚刚解释了!非常感谢你的详细解释。这对像我这样的新手来说是一个很大的帮助:)xxx
xxxxx
W32i APP - 8.0.0.xxxxx shp 6SFE25~1.EXE
num=$(< a.txt)
num=${num#*.0.0.} # "left" remove everything up to .0.0.
num=${num%% *} # "right" remove "all" after " " char
echo "num=${num}"
perl -lne 'm/(\d{5})/g;print $1'