使用命令行实用程序提取子字符串

时间:2016-01-17 13:22:00

标签: command-line substring

我有一个文本文件,包括以下形式的行:

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

我想使用命令行实用程序(例如awk,grep,sed)从此行中仅提取术语。即我希望结果是:

term1 
term2

我已经形成了一个正则表达式,其余部分与条款匹配,但找不到否定它的方法。

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

如何在'('之前''?

之后形成一个提取每个子字符串的命令

谢谢

1 个答案:

答案 0 :(得分: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