只是想知道是否有人可以帮助我。我有一个包含一行的文件:
W32i APP - 8.0.0.xxxxx shp 6SFE25~1.EXE
xxxxx 是 5 位数字,每次的数字都不同。我希望能够搜索 xxxxx 并将其放入一个变量中,这样我就可以使用这个变量。我使用 grep 和 sed 吗?
#!/bin/sh
read < a.txt
[[ $REPLY =~ 8.0.0.([^\ ]*) ]]
echo ${BASH_REMATCH[1]}
输出
xxxxx
一个.txt
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}"
输出 xxxxx
您会很高兴花时间了解变量修饰符的${num#xxx}, ${num##xx}, ${num%x}, ${num%%x}
工作方式的差异。高级 shell 还支持sed
类似替换,${num/0/9}
以及${num//0/9}
.
IHTH
perl -lne 'm/(\d{5})/g;print $1'
在这里测试