【问题标题】:grep regex return substring but exclude commentsgrep 正则表达式返回子字符串但排除注释
【发布时间】:2013-08-15 10:48:53
【问题描述】:

我想从文件中获取子字符串,但只能从前面没有感叹号的行(这是 Fortran 中的注释符号)中获取。我更喜欢使用 grep (但不限于)。例如:

infile.txt:

calib_ss/baseline.txt
!calib_ss/base_sharpe.txt

想要的结果:

baseline

我已经走到这一步了:

grep -Po "(?<=/)[^/.]*(?=\.)" infile.txt

返回

baseline
base_sharpe

排除以 ! 开头的行我想把表达式和

结合起来
^[^\!]

但我不会。提前致谢!

【问题讨论】:

    标签: regex grep


    【解决方案1】:

    这个 grep 应该可以工作:

    grep -Po '^[^!].*?(?<=/)\K[^/.]*(?=\.)' infile.txt
    

    输出:

    baseline
    

    说明:

    • ^[^!] 将确保在行首匹配除 ! 之外的任何内容
    • \K 将确保重置开始

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-04
      • 2012-02-17
      • 1970-01-01
      • 2011-01-29
      • 2011-10-17
      • 1970-01-01
      相关资源
      最近更新 更多