Grep regex возвращает подстроку, но исключает комментарии
104
8
Я хочу получить подстроку из файла, но только из строк, которым не предшествует восклицательный знак (который является символом комментария в Fortran). Я бы предпочел использовать grep (но не привязанный). Например:
inFile.txt:
calib_ss/baseline.txt
!calib_ss/base_sharpe.txt
Желаемый результат:
baseline
Я зашел так далеко:
grep -Po "(?<=/)[^/.]*(?=\.)" infile.txt
который возвращает
baseline
base_sharpe
Чтобы исключить строки, начинающиеся с! Я думал о объединении выражения с
^[^\!]
но я не справляюсь. Спасибо заранее!
спросил(а)
2013-08-15T13:48:00+04:00
7 лет, 6 месяцев назад
добавить комментарий
пожаловаться
Решение
96
Этот grep должен работать:
grep -Po '^[^!].*?(?<=/)\K[^/.]*(?=\.)' infile.txt
ВЫВОД:
baseline
Объяснение:
^[^!]
будет соответствовать всем, кроме !
при запуске строки\K
выполнит reset начало
ответил(а)
2013-08-15T14:21:00+04:00
7 лет, 6 месяцев назад
добавить комментарий
пожаловаться
Ваш ответ