我有这样的声明
UPDATE `test`.`scores`
SET
id=1
name='kobe'
score=99
WHERE
id=1
name='kobe'
score=100
UPDATE `test`.`scores`
SET
id=2
name='tmac'
score=70
WHERE
id=2
name='tmac'
score=100
UPDATE `test`.`scores`
SET
id=3
name='rose'
score=80
WHERE
id=3
name='rose'
score=100
......
如何在其中添加,
, and
& ?;
我想要我的结果像
UPDATE `test`.`scores`
SET
id=1,
name='kobe',
score=99
WHERE
id=1 and
name='kobe' and
score=100;
答案1
一定有比这更简单的事情:
awk '
/^ *UPDATE/ { prevsep=";" }
/^ *(SET|WHERE)/{ prevsep="" }
{ if(previous)print previous prevsep; previous = $0; prevsep = sep }
/^ *(UPDATE|SET|WHERE)/{ prevsep="" }
/^ *SET/ { sep="," }
/^ *WHERE/{ sep=" and" }
END { print previous ";" }'
每行都会被记住并使用前一个分隔符集进行打印,该分隔符是在该行之后由关键字 UPDATE SET WHERE 触发的previous
分隔符设置的。sep
这些关键字还会清除前一个分隔符(或将其设置为;
),因此打印前一行时不带逗号或and
。