我有字符串包含路径如何提取一部分字符串?
string="toto.titi.1.tata.2.abc.def"
我想提取其中toto.titi.1.tata.2.
后位于子。但1和2这里是例子,可能是其他数字。
一般来说:我想提取位于toto.titi.[i].tata.[j].
之后的子字符串。
[i]
和[j]
是数字
怎么办呢?
我有字符串包含路径如何提取一部分字符串?
string="toto.titi.1.tata.2.abc.def"
我想提取其中toto.titi.1.tata.2.
后位于子。但1和2这里是例子,可能是其他数字。
一般来说:我想提取位于toto.titi.[i].tata.[j].
之后的子字符串。
[i]
和[j]
是数字
怎么办呢?
您可以使用剪切
echo $string | cut -f6- -d'.'
该做的:
echo ${string} | sed -re 's/^toto\.titi\.[[:digit:]]+\.tata\.[[:digit:]]+\.//'
可能是这样的:
echo "$string" | cut -d '.' -f 6-
试试这个AWK行:
awk -F'toto\\.titi\\.[0-9]+\\.tata\\.[0-9]+\\.' '{print $2}' file
你的榜样:
kent$ echo "toto.titi.1.tata.2.abc.def"|awk -F'toto\\.titi\\.[0-9]+\\.tata\\.[0-9]+\\.' '{print $2}'
abc.def
使用参数膨胀,而不是一个正则表达式的替代bash
溶液:
echo "${string#toto.titi.[0-9].tata.[0-9].}"
如果数字可以是多数位值(即,大于9),就需要使用一个扩展模式:
shopt -s extglob
echo "${string#toto.titi.+([0-9]).tata.+([0-9]).}"
你知道正则表达式工具吗? – eyquem