Bash:Regex匹配第一次出现的字符
输入: 期望输出:Bash:Regex匹配第一次出现的字符,regex,linux,bash,awk,sed,Regex,Linux,Bash,Awk,Sed,输入: 期望输出: p45-322-16.jpg 我正在尝试用grep、awk或sed或者其他可以在bashshell上运行的东西来制作bash脚本 目前,我被以下问题困扰: p45 输出: echo "p45-322-16.jpg" | sed 's/\(.*\)-.*/\1/' 你需要限制你将要接受的东西。现在,您使用接受了太多的内容,并且默认情况下正则表达式的贪婪特性消耗了太多的字符 尝试将接受的字符限制为仅数字,或明确排除破折号: p45-322 你需要限制你将要接受的东西。现在
p45-322-16.jpg
我正在尝试用grep、awk或sed或者其他可以在bashshell上运行的东西来制作bash脚本
目前,我被以下问题困扰:
p45
输出:
echo "p45-322-16.jpg" | sed 's/\(.*\)-.*/\1/'
你需要限制你将要接受的东西。现在,您使用
接受了太多的内容,并且默认情况下正则表达式的贪婪特性消耗了太多的字符
尝试将接受的字符限制为仅数字,或明确排除破折号:
p45-322
你需要限制你将要接受的东西。现在,您使用
接受了太多的内容,并且默认情况下正则表达式的贪婪特性消耗了太多的字符
尝试将接受的字符限制为仅数字,或明确排除破折号:
p45-322
正则表达式的*
部分是贪婪的,因此它尽可能地读取,以便正则表达式仍然匹配。这意味着它将声明直到最后一个-
为止的所有内容
使用[^-]*
匹配所有内容,直到出现-
正则表达式的*
部分是贪婪的,因此它尽可能地读取,以便正则表达式仍然匹配。这意味着它将声明直到最后一个-
为止的所有内容
使用
[^-]*
匹配所有内容,直到出现-
您可以使用cut
命令:echo“p45-322-16.jpg”| cut-d“--f1
您可以使用cut
命令:echo“p45-322-16.jpg”| cut-d“--f1
谢谢,解释得很好!谢谢,很好的解释!另一个选项是让正则表达式从破折号开始:s/-.*/
另一个选项是让正则表达式从破折号开始:s/-.*/
echo "p45-322-16.jpg" | sed 's/\([^-]*\).*/\1/'