私にはこのような声明があります
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
。