Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 在UNIX中使用SED消除单引号字符串_Regex_Unix_Sed - Fatal编程技术网

Regex 在UNIX中使用SED消除单引号字符串

Regex 在UNIX中使用SED消除单引号字符串,regex,unix,sed,Regex,Unix,Sed,在我的文件中,我有如下内容 <sql type="cognos">SELECT * FROM [PG WIND JAROS - JAROSODS].AGREMENT_MAS WHERE FILTER = 'Saravana' and ADDress = '32/36 Abc Nagar CH' </sql> <sql type="cognos">select OBJECT_TYPE 'Object Type', OBJECT_NAME

在我的文件中,我有如下内容

<sql type="cognos">SELECT * FROM  [PG WIND JAROS - JAROSODS].AGREMENT_MAS WHERE FILTER = 'Saravana' and ADDress = '32/36 Abc Nagar CH' </sql>
<sql type="cognos">select OBJECT_TYPE           'Object Type',
 OBJECT_NAME            "Object Name",
from [PG WIND Jaros - JAROSDM].CX_WIND_LOOKUP_REF WHERE Filter = 'Kumaar' and STATUS = 'RICH' </sql>
SELECT*FROM[PG WIND JAROS-JAROSODS].AGREMENT\u MAS其中FILTER='Saravana'和ADDress='32/36 Abc Nagar CH'
选择对象类型“对象类型”,
对象名称“对象名称”,
来自[PG WIND Jaros-JAROSDM].CX_WIND_LOOKUP_REF,其中Filter='Kumaar'和STATUS='RICH'
在这里,我必须将所有内容转换为小写,除了单引号中的字符串。i、 e

输出:

<sql type="cognos">select * from  [pg wind jaros - jarosods].agrement_mas where filter = 'Saravana' and address = '32/36 Abc Nagar CH' </sql>
<sql type="cognos">select object_type           'Object Type',
 object_name            "object name",
from [pg wind jaros - jarosdm].cx_wind_lookup_ref where filter = 'Kumaar' and status = 'RICH' </sql>
select*from[pg wind jaros-jarosods].agrement\u mas其中filter='Saravana'和address='32/36 Abc Nagar CH'
选择对象类型“对象类型”,
对象名称“对象名称”,
来自[pg wind jaros-jarosdm].cx_wind_lookup_ref,其中filter='Kumaar'和status='RICH'

我怎样才能在SED中实现这一点?请帮助我……

这里有一个
awk
解决方案:

awk -F\' '{for (i=1;i<=NF;i++) printf "%s"(NF==i?RS:FS),(i%2?tolower($i):$i)}' file
<sql type="cognos">select * from  [pg wind jaros - jarosods].agrement_mas where filter = 'Saravana' and address = '32/36 Abc Nagar CH' </sql>
<sql type="cognos">select object_type           'Object Type',
 object_name            "object name",
from [pg wind jaros - jarosdm].cx_wind_lookup_ref where filter = 'Kumaar' and status = 'RICH' </sql>
sed -e "s/^\([^']*\)$/\L\1/" -e "s/\([^']*\)\('[^']*'\)/\L\1\E\2/g" -e "s/\('[^']*\)$/\L\1/" file

awk-F\'{for(i=1;i这里有一个
sed
解决方案:

awk -F\' '{for (i=1;i<=NF;i++) printf "%s"(NF==i?RS:FS),(i%2?tolower($i):$i)}' file
<sql type="cognos">select * from  [pg wind jaros - jarosods].agrement_mas where filter = 'Saravana' and address = '32/36 Abc Nagar CH' </sql>
<sql type="cognos">select object_type           'Object Type',
 object_name            "object name",
from [pg wind jaros - jarosdm].cx_wind_lookup_ref where filter = 'Kumaar' and status = 'RICH' </sql>
sed -e "s/^\([^']*\)$/\L\1/" -e "s/\([^']*\)\('[^']*'\)/\L\1\E\2/g" -e "s/\('[^']*\)$/\L\1/" file
\L
将替换内容转换为小写(直到找到
\E


我希望SQL关键字是大写的。这是一次性转换,您可以手动更改吗?(在vi中使用~)不,这不是一次性的改变。@user3459079我不知道这方面的知识,我猜这会很复杂。你没有
awk
?几乎所有带有
sed
的系统都有
awk
我不确定
sed
是否是适合这项工作的工具。Jotnes
awk
解决方案要短得多。什么\E是否指?请参阅
sed
手册页:
\E
:停止由
\L
\U
启动的案例转换。