我正在尝试提取两个字符串中间的子字符串。我执行这个 grep 命令:
echo "http://www.miweb.es/midoc-87-documento-texto_mf_4150310_1.txt" | grep -Po "(?<=midoc-).*(?=-)"
Result
87-documento
但我只想获得“87”而不是“87-documento”。
谢谢。
答案1
添加一个?
after*
来切换到非贪婪。
答案2
试试这个:
echo "http://www.miweb.es/midoc-87-documento-texto_mf_4150310_1.txt" | grep -Po "(?<=midoc-).."
我得到这个结果:
[root@tomcat7test ~]# echo "http://www.miweb.es/midoc-87-documento-texto_mf_4150310_1.txt" | grep -Po "(?<=midoc-).."
87
[root@tomcat7test ~]#