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

时间:2017-02-01 22:40:48

标签: 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 =&#34; 1s23-abc&#34; 的第一个实例进行grep?我基本上想要grep一些以 id =&#34; 开头的东西,但以引号后跟一个空格结束。任何文本都可以出现在文本之前和之后: id =&#34; 1s23-abc&#34;

1 个答案:

答案 0 :(得分:1)

echo '<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" >' | 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