2011-11-17 146 views
0

我需要从bash中的()之间的以下文本中提取字段。( - 开大括号和之间)提取文本 - 右大括号

案例1

create or replace 
PROCEDURE "Procedure_Name" 
(
field1 IN DATE, 
field2 IN VARCHAR2, 
field3 IN INTEGER 
) 

我需要下面的输出:

输出1:

field1 DATE, field2 VARCHAR2, field3 INTEGER 

输出2:

field1, field2, field3 

案例2

create or replace PROCEDURE "Procedure_Name" (field1 IN DATE,field2 IN VARCHAR2,field3 INTEGER) 

我需要下面的输出:

输出1:

field1 DATE, field2 VARCHAR2, field3 INTEGER 

输出2:

field1, field2, field3 
+0

添加“这是紧急”及类似的消息并不总是受欢迎的,不会永远适用,而你的问题会萦绕(可能是帮助他人)你收到后不久一个答案。 – dmckee

+0

另外,你应该告诉我们你的尝试;你需要更加小心你的规格:这个必须在* bash中,在bash脚本中,在你可以从bash调用的某个程序中完成*。 – dmckee

回答

2

输出1:

$ cat filename | tr '\n' ' ' | grep -o '\(.*\)' | tr '()' ' ' | sed 's/[IN|OUT]//g' 

输出2:

$ cat filename | tr '\n' ' ' | grep -o '\(.*\)' | tr '()' ' ' | sed 's/[IN|OUT]//g' | sed 's/[DATE|VARCHAR2|INTEGER]//g' 
+0

$猫t.txt 创建或替换 步骤 “过程名” ( 字段1点开始, 场2 IN VARCHAR2, 场3整数 ) – user1052481