Awk 替换引号或双引号外所有不需要的分号

Awk 替换引号或双引号外所有不需要的分号,awk,sed,Awk,Sed,我不太擅长bash。 我已经用python从Excel生成了PSQL文件 在bash脚本中运行psql 我想替换引号或双引号之外的所有分号 SELECT *; FROM table ;WHERE description =';'; SELECT *; FROM table ;WHERE; description like "%;%"; SELECT *; FROM table ;;WHERE description like ";?"; 结果应该是除

我不太擅长bash。 我已经用python从Excel生成了PSQL文件 在bash脚本中运行psql

我想替换引号或双引号之外的所有分号

SELECT *; FROM table ;WHERE description =';';

SELECT *; FROM table ;WHERE; description like "%;%";

SELECT *; FROM table ;;WHERE description like ";?";
结果应该是除分号以外的所有类型的引号/双引号,如下所示

SELECT * FROM table WHERE description =';'

SELECT * FROM table WHERE description like "%;%"

SELECT * FROM table WHERE description like ";?"
这是我试过的

sed "s/.*;.*\(\'\;'\)//g" a.sql
好像什么都没做

SELECT *; FROM table ;WHERE description =';';

SELECT *; FROM table ;WHERE; description like "%;%";

SELECT *; FROM table ;;WHERE description like ";?";

下面是一个使用
FPAT
的gnu awk解决方案:

awk-vofs=-vfpat=“\”[^\”]*\“\\”[^']*'.[^'\”]+“'{

对于(i=1;iyes,谢谢,这是有效的,请尝试理解这一点。您能解释更多关于047的信息吗?因为从ASCII表中,它只包含单引号,以双引号开头的情况下哪个句柄?我在括号表达式中有
[“\047]
,意思是匹配
好的,我明白了。谢谢你。好的,我明白了。awk-vofs=-vfpat=“\”[^\”]*\“\”[^']*'.[^'\“]+”{for(I=1;I)