我有像
这样的字符串SELECT dateAdd(dd,-90, MAX(col_name)) FROM table_123_name
我希望输出为
SELECT MAX(col_name) -90 from table_123_name
我试过
cat test.txt|sed "s/dateadd(dd,//I g"|sed 's/\(\[select\]\)\([ \s\t]*\)\([0-9-]*\)\(\[,\]\)\([ \s\t]*\)\([A-Za-z0-9(_]*[)]*\)/SELECT \6)\3/I g'
但正则表达式替换不起作用
答案 0 :(得分:1)
你可以这样做,
$ echo 'SELECT dateAdd(dd,-90, MAX(col_name)) FROM table_123_name' | sed 's/dateadd(dd,\([^,]*\), *\([^) ]*)\)) *\(.*\)/\2 \1 \L\3/gi'
SELECT MAX(col_name) -90 from table_123_name
最后的 i
修饰符有助于进行不区分大小写的匹配,\L\3
将第三个捕获组中存在的所有字符转换为小写。
答案 1 :(得分:0)
你可以使用awk
:
awk '/dateAdd/ {split($2,a,",");print $1,$3,a[2],tolower($4),$5}' file
SELECT MAX(col_name)) -90 from table_123_name
如果您需要其他条件来搜索/dateAdd/
,那么只需将其更改为您需要的内容。