linux命令之行处理命令awk命令(重要,效率很高的一个命令)
awk命令是处理文件的行命令,文件的每一行都会按照指定的方式去处理.
尤其是在数据库批量操作的情况下,使用行命令加行命令的语法迅速的写sql语句,然后配合mysql命令行 -N < sql文件 执行sql命令非常高效
下面是awk 命令的详解
{} 命令代码块,包含一条或多条命令, 多条命令使用分号分隔
0 表示整个当前行1 表示每行的第1 个字段,同理 $2 表示每行的第二个字段, awk 是根据空格分隔每个字段的.
print 是awk打印指定内容的主要命令
示例:
比如 out.txt 里面有很多这种语句行 123金融业 数字代表oid 金融业代表industry, oid每个都不相同
现在有一个sql 语句 delete from yq_annotated_tag where oid = "" and industry = "" and batch_id="" and status = 0 limit 1;
需要将这个文件中的oid 和industry 对应到sql 语句中并用mysql 去执行,就可以使用强大的awk命令
awk "{print('delete from yq_annotated_tag where oid ="%s" and industry = "%s" and batch_id="" and status = 0 limit 1;', 1,2)}" out.txt > delete_sql.sql
这样就输出了很多条sql语句到delete_sql.sql ,这个时候使用mysql命令行执行sql文件
mysql -uroot -pmysql -N < delete_sql.sql 就能执行了
使用这种方式比开发一个脚本去执行文件读取在拼接sql字符串 ,之后用pymsql 连接mysql 执行每一条命令快速的多