我正在尝试从具有键值顺序的许多段的行中提取单个字符串,但我没有得到它,因为它匹配的内容比我想要的要多得多。
这是我的示例行:
|SEGA~1~MAGIC~DESCRIPTION~~~M~TEST~|SEGB~34~12.11.2011~3~M~O~|SEGC~HELLO~WORLD~|
这条线是将许多段连接成一条线。现在我想提取以 SEGA 开头的段中索引 2 处的字符串。所以我要做的是 grep :
egrep -o 'SEGA(.*?)\~\|'
但它给了我整条线,有时它只给了我正在寻找的部分。通过匹配,我将使用 ~ 字符分割该段并取第三段。因为我使用 .*? 带问号,我希望 egrep 只匹配 SEGA 和第一次出现 ~| 之间的内容。这是在 SEGB 之前,而不是在 SEGC 或 SEGB 的末尾。
我如何告诉 grep 搜索 SEGA 并在 SEGA 之后立即提供整个内容,直到第一次出现 ~|