我有字符串包含路徑如何提取一部分字符串?
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