我想匹配以下模式,并用周围的sql关键字替换它们。
文件位于Linux服务器上,其中包含SQL代码。我试图匹配一些正则表达式。理想情况下,我想匹配任意数量的特殊字符,字母,并忽略col_4的大小写,以在查询中查找包含col4的第一个字符串。
我尝试使用以下表达方式,也尝试在社区对另一个问题的答复下进行工作。
[A-Za-z_#]*\.\)\{0,\}col4
SELECT
col1 as col1,
[&"tab.sch"].tabl_nm.col2 as col2,
col3,
[&"tab.sch"].tabl_nm.col_4 as col_4,
\#tab.sch#.tab_nm.COL_4 col_4,
col5
FROM yada yada
我希望能够忽略col_4字段的第一个实例而忽略大小写
SELECT
col1 as col1,
[&"tab.sch"].tabl_nm.col2 as col2,
col3,
upper([&"tab.sch"].tabl_nm.col_4) as col_4,
upper(#tab.sch#.tab_nm.COL_4) col_4,
col5
FROM yada yada
答案 0 :(得分:0)
要更改两个字符串时,请查看它们的共同点。当它们没有共同点(或复杂点)时,首先更改一个,然后更改另一个:
sed 's/a/b/; s/c/d/' inputfile
您能只看最后一部分就简单吗?
sed -r 's/^([^ ]*[.]col_4) /upper(\1)/i' source.txt
答案 1 :(得分:0)
感谢您的反馈。我可以使用下面的代码
sed '/SELECT/,/FROM/ {s/[Aa][Ss] [Cc][oO][lL]_4 *//;s/\([[:punct:]A-Za-z0-9]*\.\)\{0,\}[Cc][oO][lL]_4 /SUBSTR(&,1,30) as col4/;}'