2016-08-17 1 views
0

У меня есть файл example.txt, который содержит следующий текст:Grep только текст только после того, как [слов]:

[one]: bla bla bla onebla twobla 
[two]: hey heya noheya 
[onemore]: i got mad and etc 

Мне нужно Grep и показать только текст, который после [myword]:

Пытались проверить grep [myword] /tmp/example.txt | cut -d ':' -f 2

На каждом [myword] он печатает все после скобок, но как я могу получить только тот, который мне нужен, и не все?

+0

Существует нет '[MyWord]' на входе – anubhava

+0

, что вы пытаетесь сделать? – Chris

+0

Мне нужно напечатать только те тесты, которые после определенных скобок. Например, я хочу напечатать только текст, который находится в строке '[one]:', но не после '[two]:' или '[onemore]:' строк, так что вывод будет 'bla bla bla onebla twobla'. Если я хочу напечатать все после '[onemore]:' - правильный вывод должен быть «я разозлился и т. Д.» – alya

ответ

0

Вы можете вырезать первую фразу [something]: и получить остаток с помощью

Grep и SED:

$ grep -w "\[onemore\]:" words.txt | sed 's/\[onemore\]://g' 
i got mad 

Grep и AWK:

$ grep -w "\[onemore\]:" words.txt | awk -F: '{print $2}' 
i got mad 
+0

Мне нужно получить результат этого, например: «Grep [еще один]: words.txt« Результат Мне нужно получить: «Я разозлился» – alya

+0

@alya все, что ваше слово/фраза добавить его в двойные кавычки: 'Grep -o -w«я разозлилась»words.txt' будет приводить к:' я разозлился –

+0

@alya: Прошу прощения за последний комментарий, не смотрел точный grep-вход, который вы опубликовали. Я отредактировал свой ответ, чтобы дать вам то, что вы хотели. –

0

Спасибо всем! Получил ответ на другой из Unix & Linux:

$ awk '/\[myword\]/{sub(/^[^]]*\]:[[:blank:]]*/,"");print}' example.txt

ИЛИ

$ awk '/\[myword\]/{sub(/^[^]]*\]:[[:blank:]]*/,"");print}' example.txt

Смежные вопросы