Regex bash sed/grep提取两个单词之间的文本

Regex bash sed/grep提取两个单词之间的文本,regex,linux,bash,sed,Regex,Linux,Bash,Sed,我的问题与这里的问题相同,只是我只希望出现第一次,忽略所有其他问题: 在他的例子中,如果是: input: "Here is a String Here is a String" 但我只关心第一个“是” echo“这里是一个字符串这里是一个字符串”|grep-Po'(?要获取第一个单词,可以使用grep-o'^[^]*': echo "Here is a String Here is a String" | grep -Po '(?<=(Here )).*(?= String)' |

我的问题与这里的问题相同,只是我只希望出现第一次,忽略所有其他问题:

在他的例子中,如果是:

 input: "Here is a String Here is a String"
但我只关心第一个“是”


echo“这里是一个字符串这里是一个字符串”|grep-Po'(?要获取第一个单词,可以使用
grep-o'^[^]*'

echo "Here is a String Here is a String" | grep -Po '(?<=(Here )).*(?= String)' | grep -o '^[^ ]*'

echo“Here is a String Here is a String”| grep-Po'(?您的regexp恰好与位于“Here”和“String”之间的最长字符串匹配。也就是说,“Here是字符串Here is a字符串”。这是
*
量词的默认行为。


$echo“这里是一个字符串这里是一个字符串”| grep-Po'(?如果要查找包含图案的行,请使用
grep
--或
egrep
。如果要查找包含图案的行,然后在打印结果之前以某种方式对其进行转换,请使用
sed
echo "Here is a String Here is a String" | grep -Po '(?<=(Here )).*(?= String)' | grep -o '^[^ ]*'
sed 's/ String.*//;s/.*Here //'