Linux 获取字符串中的模式以特定字符开始和结束
我正在编写shell脚本,我想在字符串中获得一个以特定字符开头和结尾的模式。我能做的就是: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
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}'