使用sed,我想在第一次出现的MATCH1和下一次出现的MATCH2之间提取STRING.
echo“abcd MATCH1 STRING MATCH2 efgh MATCH1 ijk MATCH2 MATCH2 lmnop MATCH1”| SED …
我以各种方式尝试过这种方法,但鉴于MATCH1和MATCH2都可能连续出现几次,因此很难提取STRING.知道我怎么能达到这个结果吗?
解决方法
这些只返回匹配项之间的字符串,即使MATCH1 == MATCH2也可以工作.
echo ... | grep -Po '^.*?\K(?<=MATCH1).*?(?=MATCH2)'
这是一个sed解决方案:
echo ... | sed 's/MATCH1/&\n/;s/.*\n//;s/MATCH2/\n&/;s/\n.*//'
与其他一些解决方案相比,这些解决方案的优点是每个解决方案只包含一个对单个实用程序的调用.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。