Regex 如何grep部分已知字符串的第一个实例?

Regex 如何grep部分已知字符串的第一个实例?,regex,grep,Regex,Grep,我有一个包含以下信息的文件: <stuff:stuff id="1s23-abc" name="first" time="12:00" id="4s5abc67" name="first" time="12:30" > <more:stuff id="1s23-abc" name="first" time="12:00" id="4s5abc67" name="first" time="12:30" > 如何对id=“1s23 abc”的第一个实例进行grep?基本

我有一个包含以下信息的文件:

<stuff:stuff id="1s23-abc" name="first" time="12:00" id="4s5abc67" name="first" time="12:30" > <more:stuff id="1s23-abc" name="first" time="12:00" id="4s5abc67" name="first" time="12:30" >

如何对id=“1s23 abc”的第一个实例进行grep?基本上,我想grep一些以id=”开头但以引号和空格结尾的内容。任何文本都可以出现在以下文本之前和之后:id=“1s23 abc”。

echo''grep-Eo'id=\”(\S*)\”;head-1
适用于疲劳眼睛的版本:

string='<stuff:stuff id="1s23-abc" name="first" time="12:00" id="4s5abc67" name="first" time="12:30" > <more:stuff id="1s23-abc" name="first" time="12:00" id="4s5abc67" name="first" time="12:30" >'
echo $string | grep -Eo 'id=\"(\S*)\"' | head -1
string=''
echo$string | grep-Eo'id=\'(\S*)\'| head-1

我更新了任务,任何文本都可以出现在任务之前或之后。文件中没有以id开头的行
string='<stuff:stuff id="1s23-abc" name="first" time="12:00" id="4s5abc67" name="first" time="12:30" > <more:stuff id="1s23-abc" name="first" time="12:00" id="4s5abc67" name="first" time="12:30" >'
echo $string | grep -Eo 'id=\"(\S*)\"' | head -1