计算单个cote中的分号数

时间:2017-04-11 13:46:48

标签: shell

嗨,我想在单个cote中计算分号的数字

UPDATE T1 FROM abc T1,def T2 SET RECORD_END_TS = T2.a - INTERVAL '1' SECOND
,updatets = CURRENT_TIMESTAMP(6) WHERE T1.name = 'first;last'AND T1.address = 'last;address';

我的查询中有两个单一的cote语句

WHERE T1.name = 'first;last'AND T1.address = 'last;address';

我希望输出为2,因为单个cote中有两个分号语句但是我用grep命令得到3

我试过grep推荐

total_semicolon=`DML| grep -o ';' | wc -l`

* DML是完整查询

1 个答案:

答案 0 :(得分:0)

试试这个单行:

awk -F"'" '{for(i=1;i<=NF;i++)c+=(i%2==0?gsub(/;/,"",$i):0)}END{print c}'

它适用于相同报价对案例中的单个/多个;,有些测试:

kent$  echo "foo ';b;;;' bar;;;;;;;;;;;"|awk -F"'" '{for(i=1;i<=NF;i++)c+=(i%2==0?gsub(/;/,"",$i):0)}END{print c}'
4

kent$  echo "foo ';b;;;' 'foo;,bar;' ;;;;"|awk -F"'" '{for(i=1;i<=NF;i++)c+=(i%2==0?gsub(/;/,"",$i):0)}END{print c}'   
6