2011-11-17 144 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