我有一个文本文件,包括以下形式的行:
(term1 x:a y:b (term2 z:c k:a))
我想使用命令行实用程序(例如awk,grep,sed)从此行中仅提取术语。即我希望结果是:
term1
term2
我已经形成了一个正则表达式,其余部分与条款匹配,但找不到否定它的方法。
(\()|( \()|( (.*?) \()|( (.*?)\)+)
如何在'('之前''?
之后形成一个提取每个子字符串的命令谢谢
答案 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