我想从文件中获取子字符串,但只能从前面没有感叹号(这是 Fortran 中的注释符号)的行中获取。我更喜欢使用 grep (但不限于)。例如:
文件.txt:
calib_ss/baseline.txt
!calib_ss/base_sharpe.txt
想要的结果:
baseline
我走了这么远:
grep -Po "(?<=/)[^/.]*(?=\.)" infile.txt
返回
baseline
base_sharpe
排除以 ! 开头的行我想结合表达
^[^\!]
但我不管理。提前致谢!
最佳答案
这个 grep 应该工作:
grep -Po '^[^!].*?(?<=/)\K[^/.]*(?=\.)' infile.txt
输出:
baseline
说明:
^[^!]
将确保匹配除 !
之外的任何内容在线开始 \K
将确保重置开始关于regex - grep正则表达式返回子字符串但排除注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18251154/