在Unix/Linux中如何提取两个括号之间的单词? [英] How to extract words between 2 parentheses in Unix/ Linux?

查看:318
本文介绍了在Unix/Linux中如何提取两个括号之间的单词?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个SAS数据集,其中查询列表作为变量之一.以下是变量值之一:

I have a SAS dataset with the list of queries as one of the variable. Below is one of the variable value:

SELECT * FROM ( SELECT Table1 file2.txt file.txt QUEUES QDefinitions
Parameters TRAP-Deposit-DSTran.dat.2016-08-07 FROM CS_CASE WHERE 
ANT_CD='FI_BASE_TENANT')t1 LEFT OUTER JOIN Table2 t2 ON 
t2.CASE_ID=t1.CASE_ID LEFT OUTER JOIN Table3 t3 ON 
t3.SERVICE_XID=t1.SERVICE_XID LEFT OUTER JOIN Table4 t4 ON 
t4.SERVICE_ID=t1.SERVICE_ID WHERE ( t1.CASESTATUs_CD = (NEW) OR 
t1.CASE_STATUS_CD = (OPEN) )
AND ( t3.SEARCH_VALUE = (HighVal_Ind) AND t3.SEARCH_VALUE_N <= 3 ) AND 
( t4.SEARCH_VALUE_Nm = (Curr_Strategy) AND t4.SEARCH_STRG = (095) ) 
GROUP BY t1.CASE_REFERENCE,t2.LAST_SCRFP,t1.SERVICE_ID 
ORDER BY t2.LAST_SCRFP DESC

我想做的是将值输入代码输入(' ')放在()中.

What I want to do is I want to put the value enter code here's in () as (' ').

例如:

WHERE ( t1.CASESTATUs_CD = (NEW) OR t1.CASE_STATUS_CD = (OPEN) ) 

我想将其更改为:

WHERE ( t1.CASESTATUs_CD = ('NEW') OR t1.CASE_STATUS_CD = ('OPEN') ) 

我该怎么办?

推荐答案

您的问题尚不清楚,但也许这是您想要的:

Your question isn't clear but MAYBE this is what you want:

$ sed -E 's/\(([^()]+)\)/('\''\1'\'')/g' file
SELECT * FROM ( SELECT Table1 file2.txt file.txt QUEUES QDefinitions
Parameters TRAP-Deposit-DSTran.dat.2016-08-07 FROM CS_CASE WHERE
ANT_CD='FI_BASE_TENANT')t1 LEFT OUTER JOIN Table2 t2 ON
t2.CASE_ID=t1.CASE_ID LEFT OUTER JOIN Table3 t3 ON
t3.SERVICE_XID=t1.SERVICE_XID LEFT OUTER JOIN Table4 t4 ON
t4.SERVICE_ID=t1.SERVICE_ID WHERE ( t1.CASESTATUs_CD = ('NEW') OR
t1.CASE_STATUS_CD = ('OPEN') )
AND ( t3.SEARCH_VALUE = ('HighVal_Ind') AND t3.SEARCH_VALUE_N <= 3 ) AND
( t4.SEARCH_VALUE_Nm = ('Curr_Strategy') AND t4.SEARCH_STRG = ('095') )
GROUP BY t1.CASE_REFERENCE,t2.LAST_SCRFP,t1.SERVICE_ID
ORDER BY t2.LAST_SCRFP DESC

上面是在此输入文件上运行的:

The above was run on this input file:

$ cat file
SELECT * FROM ( SELECT Table1 file2.txt file.txt QUEUES QDefinitions
Parameters TRAP-Deposit-DSTran.dat.2016-08-07 FROM CS_CASE WHERE
ANT_CD='FI_BASE_TENANT')t1 LEFT OUTER JOIN Table2 t2 ON
t2.CASE_ID=t1.CASE_ID LEFT OUTER JOIN Table3 t3 ON
t3.SERVICE_XID=t1.SERVICE_XID LEFT OUTER JOIN Table4 t4 ON
t4.SERVICE_ID=t1.SERVICE_ID WHERE ( t1.CASESTATUs_CD = (NEW) OR
t1.CASE_STATUS_CD = (OPEN) )
AND ( t3.SEARCH_VALUE = (HighVal_Ind) AND t3.SEARCH_VALUE_N <= 3 ) AND
( t4.SEARCH_VALUE_Nm = (Curr_Strategy) AND t4.SEARCH_STRG = (095) )
GROUP BY t1.CASE_REFERENCE,t2.LAST_SCRFP,t1.SERVICE_ID
ORDER BY t2.LAST_SCRFP DESC

这篇关于在Unix/Linux中如何提取两个括号之间的单词?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆