2015-08-17 2 views
1

Я пытаюсь найти способ grep грамматические предложения из образца ebook. Вот что вход выглядит следующим образом:Grep grammatical clauses

This is a test my friend, this is just a test; I'm going to do some shopping:`what do you need?` 
Nothing, he said. 

Желаемый результат:

This is a test my friend 
this is just a test 
I'm going to do shopping 
what do you need 
Nothing 
he said 

Любые идеи о том, как можно достичь этого?

спасибо!

+0

Что вы хотите делать с предложениями, которые распространяются по нескольким строкам? –

ответ

4

Вы можете использовать гну-AWK так:

awk -v RS='[\n.,;:`?]+' -v ORS='\n' '{$1=$1} 1' file 
This is a test my friend 
this is just a test 
I'm going to do some shopping 
what do you need 
Nothing 
he said 
+1

Он работал как шарм, большое спасибо – bobylapointe

0

Проложить его до тр.

cat input | tr ',' '\n' 
+1

Я думаю, вам нужно беспокоиться о двоеточиях, кавычках, точках с запятой, полных остановках (периодах), вопросительных знаках и т. Д., Но основная идея выглядит правильно. Помогает ли '-s'? Кроме того, если есть один входной файл, перенаправление ввода-вывода является достаточным. В общем, трубопровод необходим. –

1

Это сближается:

grep -o '[[:alpha:][:space:]]\+' file 

но переводит одинарную кавычку в "Я" на новую строку. Учитывая ваш пример пунктуации, это работает:

grep -o '[^,;:`?.]\+' file 

Это сохранит пространство после символа пунктуации. Чтобы удалить его, проведите вывод до

| sed 's/^ //'