我有一个包含以下内容的文件temp.txt:
CREATE TABLESPACE TSASNCA
IN NODEGROUP IBMCATGROUP
PAGESIZE 8192
MANAGED BY DATABASE
USING
(
FILE 'TSASNCA' 482M
)
EXTENTSIZE 8
BUFFERPOOL DPROPR8KBP;
CREATE TABLESPACE TSASNUOW
IN NODEGROUP IBMCATGROUP
PAGESIZE 8192
MANAGED BY DATABASE
USING
(
FILE 'TSASNUOW' 10M
)
EXTENTSIZE 8
BUFFERPOOL DPROPR8KBP;在上面的文件中,我想用MANAGED BY AUTOMATIC STORAGE替换从"MANAGED BY DATABASE“开始,以")”结尾的两次或n次文本。
我尝试了下面的方法,它似乎很贪婪,从第一次出现MANAGED BY DATABASE到最后一次出现),它匹配了所有内容
perl -0777 -pe 's/MANAGED BY DATABASE.*\)/MANAGED BY AUTOMATIC STORAGE/sg' temp.txt
CREATE TABLESPACE TSASNCA
IN NODEGROUP IBMCATGROUP
PAGESIZE 8192
MANAGED BY AUTOMATIC STORAGE
EXTENTSIZE 8
BUFFERPOOL DPROPR8KBP;这不是我想要的。然后我试着消除贪婪,但仍然没有运气:
perl -0777 -pe 's/MANAGED BY DATABASE.*\)+?/MANAGED BY AUTOMATIC STORAGE/sg' temp.txt
CREATE TABLESPACE TSASNCA
IN NODEGROUP IBMCATGROUP
PAGESIZE 8192
MANAGED BY AUTOMATIC STORAGE
EXTENTSIZE 8
BUFFERPOOL DPROPR8KBP;发布于 2015-05-28 06:23:40
我不确定我是否很好地理解了您的问题,但是您可以使用这个正则表达式:
\*\*.*?\*\* with S flag (single line)
or
(?s)\*\*.*?\*\* with S inline flag
or
\*\*[\s\S]*?\*\* without S flag您的输出将是:
CREATE TABLESPACE TSASNCA
IN NODEGROUP IBMCATGROUP
PAGESIZE 8192
**MANAGED BY AUTOMATIC STORAGE**
EXTENTSIZE 8
BUFFERPOOL DPROPR8KBP;
CREATE TABLESPACE TSASNUOW
IN NODEGROUP IBMCATGROUP
PAGESIZE 8192
**MANAGED BY AUTOMATIC STORAGE**
EXTENTSIZE 8
BUFFERPOOL DPROPR8KBP;https://stackoverflow.com/questions/30493723
复制相似问题