grep - 正则表达式 - 匹配到特定单词

 太阳神夜 发布于 2023-02-12 21:35

可以说我有一个像这样的行的文件

abcefghijklxyz
abcefghijkl

我想只获得abc行之间和行尾的字符串.行的结尾可以定义为正常的行尾或字符串xyz.

我的问题是

如何只使用匹配的字符串grep和正则表达式?例如,上面显示的两条线的预期输出将是

efghijkl
efghijkl

我不想要开始和结束标记.

我到现在为止做了什么

grep -oh "abc.*xyz"

我使用Ubuntu 13.04和Bash shell.

1 个回答
  • 这条线斩断前进abc结束 xyz(如果有),并为您提供所需的部分:

    grep -oP '^abc\K.*?(?=xyz$|$)'
    

    用你的例子:

    kent$  echo "abcefghijklxyz
    abcefghijkl"|grep -oP '^abc\K.*?(?=xyz$|$)'
    efghijkl
    efghijkl
    

    xyz在文本中间的另一个例子:

    kent$  echo "abcefghijklxyz
    abcefghijkl
    abcfffffxyzbbbxyz
    abcffffxyzbbb"|grep -oP '^abc\K.*?(?=xyz$|$)'
    efghijkl
    efghijkl
    fffffxyzbbb
    ffffxyzbbb
    

    2023-02-12 21:44 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有