Как я понял это регулярное выражениеПочему символ новой строки в моем регулярном выражении соответствует всей строке?
^1.*\n
должна соответствовать линии, начиная с 1 с последующим любым количеством символов и новой строки полукокса, затем останавливается. Что это на самом деле делает при использовании Perl регулярного выражения соответствует линии, начиная с 1 с последующим любым количеством символов и новой строкой полукоксом и затем все следующей строкой:
-bash-3.2$ cat testfile
1 dghdfgdgdgdfgdfggd
2 dghdfgdgdgdfgdfggd
3 dghdfgdgdgdfgdfggd
1 dghdfgdgdgdfgdfggd
2 dghdfgdgdgdfgdfggd
3 dghdfgdgdgdfgdfggd
1 dghdfgdgdgdfgdfggd
2 dghdfgdgdgdfgdfggd
3 dghdfgdgdgdfgdfggd
-bash-3.2$ grep -P '^1.*' testfile
1 dghdfgdgdgdfgdfggd
1 dghdfgdgdgdfgdfggd
1 dghdfgdgdgdfgdfggd
-bash-3.2$ grep -P '^1.*\n' testfile
1 dghdfgdgdgdfgdfggd
2 dghdfgdgdgdfgdfggd
1 dghdfgdgdgdfgdfggd
2 dghdfgdgdgdfgdfggd
1 dghdfgdgdgdfgdfggd
2 dghdfgdgdgdfgdfggd
Я был на самом деле работаю на более многострочный шаблон и интересно, почему он не работает, и отследил его до вышеупомянутой проблемы. Мой вопрос в основном «почему он ведет себя таким образом», но я рад услышать, как получить матч, который я хотел.
Благодаря
Вы пытались передать опции -oP? 'grep -oP '^ 1. * \ n' testfile'. [* '--only-matching' - Распечатайте только согласованные (непустые) части соответствующих строк, каждая из которых будет выделена на отдельной выходной строке. *] (http://www.gnu.org/software/ grep/manual/grep.html) –