grep regex返回子字符串,但不包括注释

grep regex返回子字符串,但不包括注释,regex,grep,Regex,Grep,我想从文件中获取子字符串,但只能从前面没有感叹号(Fortran中的注释符号)的行中获取。我更喜欢使用grep(但不是绑定到)。例如: infle.txt: calib_ss/baseline.txt !calib_ss/base_sharpe.txt 预期结果: baseline 我走了这么远: grep -Po "(?<=/)[^/.]*(?=\.)" infile.txt 排除以开头的行!我想把这个表达和 ^[^\!] 但我没办法。提前谢谢 这个grep应该可以工作: gre

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

infle.txt:

calib_ss/baseline.txt
!calib_ss/base_sharpe.txt
预期结果:

baseline
我走了这么远:

grep -Po "(?<=/)[^/.]*(?=\.)" infile.txt
排除以开头的行!我想把这个表达和

^[^\!]
但我没办法。提前谢谢

这个grep应该可以工作:

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

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