У меня есть большой файл, который содержит все поверхностные формы лексем на определенном языке. Я хотел извлечь только изгибные шаблоны глагола, в частности 1, 2, 3-го лица единственного и множественного числа в настоящем времени.
Я протестировал следующее регулярное выражение, используя этот онлайн-инструмент, и он правильно определяет строки, которые я пытаюсь извлечь.
regex: Vm-p\d.+(e|p)
Ниже приведен пример того, как файл выглядит со строками, которые * соответствуют *:
сломе сломити Vm-p3p-an-n---e *match*
сломи сломити Vmmp2s-an-n---e
сломи сломити Vm-p3s-an-n---e *match*
сломивши сломити Rvp
сломиле сломити Vmps-pfan-n---e
сломим сломити Vm-p1s-an-n---e *match*
сломимо сломити Vm-p1p-an-n---e *match*
сломите сломити Vm-p2p-an-n---e *match*
сломићеш сломити Vmif2s-an-n---e
сломиш сломити Vm-p2s-an-n---e *match*
иде ићи Vmia2s-an-n---p
иде ићи Vm-p3s-an-n---p *match*
идем ићи Vm-p1s-an-n---p *match*
идемо ићи Vm-p1p-an-n---p *match*
идео ићи Vmps-sman-n---p
идете ићи Vm-p2p-an-n---p *match*
идеш ићи Vm-p2s-an-n---p *match*
идоше ићи Vmia3p-an-n---p
иду ићи Vm-p3p-an-n---p *match*
идући ићи Rvp
иђасте ићи Vmii2p-an-n---p
иђаху ићи Vmii3p-an-n---p
иђаше ићи Vmii2s-an-n---p
ићи ићи Vmn----an-n---p
ишавши ићи Rvp
Однако, когда я пытаюсь использовать grep в командной строке, я могу заставить работать только его части, но не все вместе. Есть ли способ лучше? Я не смог найти хорошую ссылку в Интернете. Я ожидаю, что я буду искать другие шаблоны помимо этого.
Что я пробовал? Это работает, но как я могу их объединить?
$ grep -P "Vm-p\d.+e" input.txt >> sr_verbs.txt
$ grep -P "Vm-p\d.+p" input.txt >> sr_verbs.txt
Обновление: Как указывал @kevinji, мое оригинальное регулярное выражение должно было работать с опцией -P. Я попробовал это снова сегодня, и это сделало. Ну, я думаю, я не совсем уверен, что я сделал. Во всяком случае, это работает нормально.
$ grep -P "Vm-p\d.+(e|p)" input.txt