如何使用shell脚本在起始和相应的结束括号之间找到模式

时间:2017-04-18 08:18:27

标签: linux unix grep sh

我有一个包含以下模式的文件

CREATE TABLE hello
(
a string CHARACTER SET ISO88591 NO
DEFAULT -- NOT NULL
, b int NO DEFAULT -- NOT NULL
, c string NO DEFAULT -- NOT NULL
, d string CHARACTER SET ISO88591 DEFAULT
NULL
, e string CHARACTER SET ISO88591 DEFAULT
NULL
, f string CHARACTER SET ISO88591 DEFAULT
NULL
, CONSTRAINT xyz(hello)
, CONSTRAINT xyz CHECK
(hello how r u)
)

输出应为

a string
, b int 
, c string 
, d string 
, e string 
, f string 

我尝试了以下命令来提取模式b / w括号,但由于有内部括号,因此无法找到匹配项。我需要在第一个括号和最后一个括号中找到所有文本。

cat file.txt | grep -i '(.*)'
 awk '/(.*)/' file.txt

感谢这方面的任何帮助

1 个答案:

答案 0 :(得分:-1)

解析SQL总是一件混乱的事情。理想情况下,您使用的是SQL解析器,但它们基本上都是由unobtanium构成的。所以我们破解。类似下面的内容可以在awk中使用:

JobNumberString [1] = 00
JobNumberString [2] = 01
JobNumberString [3] = 03