2016-01-17 6 views
0

У меня есть текстовый файл, включая строки в виде:Извлечение подстроки с помощью утилиты командной строки

(term1 x:a y:b (term2 z:c k:a)) 

Я хочу, чтобы извлечь только термины из этой строки с помощью утилиты командной строки, таких как AWK, Grep, SED. то есть я хочу, чтобы результат:

term1 
term2 

Я образовал регулярное выражение соответствия остальных, но условия, но не мог найти способ, чтобы свести на нет его. ?

(\()|(\()|((.*?) \()|((.*?)\)+) 

Как я могу сформировать команду извлекая каждую подстроку после '(' и до '»

Благодаря

ответ

0

Попробуйте это:

sed "s/(\([^ (]*\)[^(]*/\1\n/g" 

Например:

$ echo "(term1 x:a y:b (term2 (term3) z:c k:a) x (termX a:b))" | sed "s/(\([^)]*\)[^(]*/\1\n/g" 
term1 
term2 
term3 
termX 
Смежные вопросы