如何用单行Bash脚本将域名IP数据转换为SQL更新语句?
单行Bash脚本实现数据转SQL语句
可以用awk工具快速完成这个转换,单行脚本如下:
awk -F ',' '{printf "update table1 SET ip='\''%s'\''where domain like '\''%s'\'';\n", $2, $1}' input.txt
脚本说明:
-F ',':指定逗号作为字段分隔符,将每行数据拆分为域名(第一个字段$1)和IP地址(第二个字段$2)printf:按照SQL模板格式化输出,其中%s是占位符,分别代入IP和域名;'\''是Bash中单引号的转义写法,确保SQL语句里的单引号能正确输出input.txt:存放原始域名,IP格式数据的文件名,如果需要从管道读取数据,可写成:cat input.txt | awk -F ',' '{printf "update table1 SET ip='\''%s'\''where domain like '\''%s'\'';\n", $2, $1}'
替代方案(用sed实现):
若习惯用sed,也可通过正则匹配替换完成:
sed -E "s/^([^,]+),([^,]+)$/update table1 SET ip='\2'where domain like '\1';/" input.txt
-E:启用扩展正则表达式,支持分组捕获^([^,]+),([^,]+)$:匹配整行内容,分别捕获逗号前的域名(第一组)和逗号后的IP(第二组)\1、\2:引用捕获到的分组内容,替换为目标SQL格式
内容的提问来源于stack exchange,提问作者Bronix
相关产品推荐
相关产品推荐

