1

只是想知道是否有人可以帮助我。我有一个包含一行的文件:

W32i   APP   -     8.0.0.xxxxx shp 6SFE25~1.EXE

xxxxx 是 5 位数字,每次的数字都不同。我希望能够搜索 xxxxx 并将其放入一个变量中,这样我就可以使用这个变量。我使用 grep 和 sed 吗?

4

3 回答 3

1
#!/bin/sh

read < a.txt
[[ $REPLY =~ 8.0.0.([^\ ]*) ]]
echo ${BASH_REMATCH[1]}

输出

xxxxx
于 2013-01-17T14:51:26.933 回答
1

一个.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

于 2013-01-17T14:55:19.903 回答
1
perl -lne 'm/(\d{5})/g;print $1'

在这里测试

于 2013-01-17T17:49:42.143 回答