2017-02-08 5 views
-4

У меня есть короткий текстовый файл, где я должен делать вывод данных с помощью специального шаблона. Мой файл:Grep блок текста с использованием шаблона

99 test1 
88 test2 
10 test3 
11 test1 
12 test1 
13 test2 
14 test3 
17 test1 
18 test4 

Один за другим, от test1 до test2 и для тестирования3. Так что ... я написал COMAND:

sed '/test1.*\|test2.*\|test3/!d' filename 

И выход я есть результат:

99 test1 
88 test2 
10 test3 
11 test1 
12 test1 
13 test2 
14 test3 
17 test1 

В этом случае, у меня есть строки, что я не нужен:

11 test1 

17 test1 

Эти строки не идут один за одним. Как я могу сделать результат, который мне нужен? Пожалуйста, помогите мне. Спасибо за внимание. я должен получить этот результат:

99 test1 
88 test2 
10 test3 
12 test1 
13 test2 
14 test3 
+3

Вы заметили, что ваш вопрос неясен? –

+3

Каковы критерии для определения этих строк не нужны? –

+0

Вы хотите сказать, что вам нужны строки, которые имеют полную последовательность 'test {1,2,3}' строк и удалить все остальные? Если да: добавьте такую ​​формулировку к своему вопросу, чтобы она стала понятной для других пользователей. – sorontar

ответ

0

Простой быстрый способ, хотя и не очень элегантно, чтобы поставить его в одну строку, разбить его в желаемый рисунок, а затем отфильтровать его снова с рисунком:

sed ':a;N;$!ba;s/\n/\\n/g' < filename | \ 
sed 's/\([0-9][0-9] test1\\n[0-9][0-9] test2\\n[0-9][0-9] test3\\n\)/\n\1\n/g' | \ 
egrep "[0-9][0-9] test1\\\n[0-9][0-9] test2\\\n[0-9][0-9] test3\\\n" | \ 
sed 's/\\n/\n/g' | grep . 
+0

не плохой. но на выходе у меня есть: 99 test1 88 test2 10 test3. , но я должен иметь: 99 test1 88 test2 10 test3 12 test1 13 test2 14 test3 – Valeriu

+0

Работы, как ожидается, для меня, может быть, у вас есть другой вкус Grep и СЭД. Вы должны проверить вывод без двух последних команд (grep и sed), чтобы узнать, что вы получаете, а затем работать оттуда. –

+0

в вашем случае, у меня есть первые три строки, но я должен получить все строки в шаблоне (test1, test2, test3) – Valeriu

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