【发布时间】:2014-01-24 13:01:18
【问题描述】:
我的 shell 脚本中有这个
./osmfilter austria-latest.osm --keep="$key=$value" |
./osmconvert - --all-to-nodes --csv="@id @lat @lon @timestamp $key name" --csv-headline |
awk -F "\t" '{if($5 != "" && $6 != "") print "INSERT INTO nodes (name, timestamp, lat, lon, cid) VALUES (\"",$6,"\",\"",$4,"\",",$2,",",$3,","'$cid'");"}'
> $value.sql
sed -i '1d' $value.sql
现在一行输出通常是这样的:
INSERT INTO nodes (name, timestamp, lat, lon, cid) VALUES (" OMV "," 2013-06-21T19:46:57Z ", 48.2160931 , 14.2793397 ,2);
但如果名称中有 " 或 ' 则 SQL 导入将失败:
INSERT INTO nodes (name, timestamp, lat, lon, cid) VALUES (" "Landkauf" Bund "," 2014-01-04T10:42:33Z ", 46.7899638 , 15.8526000 ,2);
我可以告诉 awk 转义所有 " 内部例如 $6 输出吗? 不必是awk
【问题讨论】:
标签: sql shell sed awk escaping