我想从文件中获取子字符串,但只能从没有感叹号的行(它是Fortran中的注释符号)中获取。我更喜欢使用grep(但不是绑定)。例如:
infile.txt:
calib_ss/baseline.txt
!calib_ss/base_sharpe.txt
期望的结果:
baseline
我到目前为止:
grep -Po "(?<=/)[^/.]*(?=\.)" infile.txt
返回
baseline
base_sharpe
排除以!开头的行!我想到将表达式与
结合起来^[^\!]
但我不管理。提前谢谢!
答案 0 :(得分:4)
这个grep应该可以工作:
grep -Po '^[^!].*?(?<=/)\K[^/.]*(?=\.)' infile.txt
<强>输出:强>
baseline
<强>解释强>
^[^!]
将确保匹配除!
之外的任何内容\K
将确保重置开始