获取2字符串之间的任何字符串,并在bash中分配一个变量
我不能让它工作。我只想在bash中获得另外两个对象之间的字符串。像这样:获取2字符串之间的任何字符串,并在bash中分配一个变量,bash,Bash,我不能让它工作。我只想在bash中获得另外两个对象之间的字符串。像这样: FOUND=$(echo "If show <start>THIS WORK<end> then it work" | **the magic**) echo $FOUND FOUND=$(echo“如果显示此工作,那么它工作”|**魔术**) 找到echo$ 看起来很简单…sed-n的/*\(.*\)./\1/p' sed -n 's/.*<start>\(.*\)<end&
FOUND=$(echo "If show <start>THIS WORK<end> then it work" | **the magic**)
echo $FOUND
FOUND=$(echo“如果显示此工作,那么它工作”|**魔术**)
找到echo$
看起来很简单…sed-n的/*\(.*\)./\1/p'
sed -n 's/.*<start>\(.*\)<end>.*/\1/p'
如果您的字符串中有FS
设置为
[jaypal:~/Temp]FOUND=$(echo“如果显示此工作,则它工作”|
awk-v FS=“[]”“{print$3}”)
找到[jaypal:~/Temp]echo$
这项工作
这可以在bash中完成,无需任何外部命令,如awk和sed。在bash中进行正则表达式匹配时,匹配结果被放入一个名为bash_REMATCH的特殊数组中。此数组的第二个元素包含来自第一个捕获组的匹配项
data="If show <start>THIS WORK<end> then it work"
regex="<start>(.*)<end>"
[[ $data =~ $regex ]] && found="${BASH_REMATCH[1]}"
echo $found
data=“如果显示此工作,则它工作”
regex=“(*)”
[[$data=~$regex]]&&found=“${BASH\u重新匹配[1]}”
找到echo$
这也可以在grep中使用perl正则表达式来完成(特定于GNU):
found=$(grep-Po'(?您的字符串中有和吗?或者那是供我们参考的?如果没有,那么您的实际字符串和所需的输出是什么?更多的信息肯定会有所帮助!@JaypalSingh和是一个参考。可以是任何文本:)$found只显示“此工作”
data="If show <start>THIS WORK<end> then it work"
regex="<start>(.*)<end>"
[[ $data =~ $regex ]] && found="${BASH_REMATCH[1]}"
echo $found
found=$(grep -Po '(?<=<start>).*(?=<end>)' <<< "If show <start>THIS WORK<end> then it work")
echo "$found"