首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用KornShell从文件中提取regex模式的多个实例

问使用KornShell从文件中提取regex模式的多个实例
EN

Stack Overflow用户
提问于 2013-12-03 01:09:35
回答 1查看 379关注 0票数 1

我有一个文件,它可能有多个字符串模式的实例(从X开始,以Y结尾)。我想提取与此模式匹配的每个实例。这些可能位于单行或新行,可能位于或不位于行的开始或结束。我尝试使用grep的正则表达式模式为(X*Y),但运行ksh的KornShell (ksh)版本不承认-c选项,因此很难提取所需的内容。我也读过awk可以做到这一点,但找不到好的文档为awk。

任何帮助都会很高兴的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-03 13:46:50

如果模式包含在一行上,而每行只包含一个实例,则可以尝试

代码语言:javascript
复制
awk -f ext.awk file

其中file是您的输入文件,ext.awk是

代码语言:javascript
复制
BEGIN {
    pat="X.*Y"
}
$0 ~ pat {
    match ($0,"(" pat ")",a)
    print a[1]
}

更新

如果可以在一行上找到多个模式,或者模式扩展到多行,则可以用以下方式替换ext.awk:

代码语言:javascript
复制
{
    line=line $0 RS
}
END {
    while(match(line,/(X[^Y]*Y)/,a)) {
        print a[1]
        line=substr(line,RSTART+RLENGTH)
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20340966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档