5

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

infile.txt:

calib_ss/baseline.txt
!calib_ss/base_sharpe.txt

期望的结果:

baseline

我做到了这一点:

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

返回

baseline
base_sharpe

排除以 ! 开头的行 我想将表达式与

^[^\!]

但我不管理。提前致谢!

4

1 回答 1

4

这个 grep 应该可以工作:

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

输出:

baseline

解释:

  • ^[^!]将确保匹配除!行开始之外的任何内容
  • \K将确保重置开始
于 2013-08-15T11:21:38.390 回答