我从另一个脚本获得了一个带有这些字符串的.txt - >
<li this="that" id="number-*">
<li me="somebody" id="number-*">
*实际上是一个随机数,我需要得到它,&#34;数字&#34;不会改变。
有没有办法使用Bash内置命令来做到这一点?
罐
答案 0 :(得分:1)
使用grep -oP
s='<li this="that" id="number-1234">'
echo "$s"|grep -oP 'number-\K[0-9]+'
1234
对于那些不支持grep -P
的旧系统,这是一个awk版本:
echo "$s" | awk -F 'number-' '{sub(/[^0-9]+/, "", $2); print $2}'
1234
答案 1 :(得分:1)
使用GNU grep
:
grep -oP 'number-\K\d+' inputfile
或
grep -oP '(?<=number-)\d+' inputfile
答案 2 :(得分:0)
我不了解bash builtins,但如果你只想要数字:
egrep -o '[0-9]+'
应该为你做。
答案 3 :(得分:0)
一个人cut
和sed
,
cut -d- -f 2 filename | sed 's/">//g'
示例:
$ s='<li this="that" id="number-1234">'
$ echo "$s" | cut -d- -f 2 | sed 's/">//g'
1234
答案 4 :(得分:0)
仅使用bash内置命令:
while read; do
[[ $REPLY =~ number-([[:digit:]]+) ]] && echo ${BASH_REMATCH[1]}
done < input.txt
$REPLY
变量,逐一number-([[:digit:]]+)
以匹配您需要的数字