Linux 获取字符串中的模式以特定字符开始和结束

Linux 获取字符串中的模式以特定字符开始和结束,linux,shell,Linux,Shell,我正在编写shell脚本,我想在字符串中获得一个以特定字符开头和结尾的模式。我能做的就是: a=`grep -oh ^\/ $1` grep -oh \'$ $a 我知道grep-oh命令会在文件中找到一个单词并将其打印出来,因此我尝试查找以/开头,以结尾的单词。 但是它仍然可以找到单词,但是我需要找到模式,比如如果/bin/ls'dir是字符串,我必须得到/bin/ls。同样,我不能在结尾处抑制“字符 如何做到这一点?Perl正则表达式可以方便地使用前瞻断言: str="like if /b

我正在编写shell脚本,我想在字符串中获得一个以特定字符开头和结尾的模式。我能做的就是:

a=`grep -oh ^\/ $1`
grep -oh \'$ $a
我知道
grep-oh
命令会在文件中找到一个单词并将其打印出来,因此我尝试查找以
/
开头,以
结尾的单词。
但是它仍然可以找到单词,但是我需要找到模式,比如如果
/bin/ls'dir
是字符串,我必须得到/bin/ls。同样,我不能在结尾处抑制
字符


如何做到这一点?

Perl正则表达式可以方便地使用前瞻断言:

str="like if /bin/ls'dir is the string, I have to get /bin/ls. "
grep -oP "/.*?(?=')" <<< "$str"

假设它是一个列表,而不是文本:

 #!/bin/bash
echo "/bin/ls'dir"|awk -F\' '{print "dir: "$1"  end: "$NF}'
 #!/bin/bash
echo "/bin/ls'dir"|awk -F\' '{print "dir: "$1"  end: "$NF}'