linux 效率高,linux命令之行处理命令awk命令(重要,效率很高的一个命令)

awk命令是处理文件的行命令,文件的每一行都会按照指定的方式去处理.

尤其是在数据库批量操作的情况下,使用行命令加行命令的语法迅速的写sql语句,然后配合mysql命令行 -N < sql文件 执行sql命令非常高效

下面是awk 命令的详解

{} 命令代码块,包含一条或多条命令, 多条命令使用分号分隔

-F 指定分隔符 , 比如$0 表示整行,$1,$2指第一列和第二列,-F参数就是指定以什么字符划分每一列.比如使用空格区分 -F " "

$0 表示整个当前行

$1 表示每行的第1 个字段,同理 $2 表示每行的第二个字段, awk 是根据空格分隔每个字段的.

printf(格式化打印命令)是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 -F " " "{printf('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 就能执行了

示例2:

awk -F " " '{printf("%s\n", $2) }' feeds.txt

注意: {} 外面必须使用单引号,不能使用双引号, printf 里面使用双引号,不能使用单引号

使用这种方式比开发一个脚本去执行文件读取在拼接sql字符串 ,之后用pymsql 连接mysql 执行每一条命令快速的多

使用awk命令打印指定行

打印文件的第m行数据

awk 'NR==m {printf("%s",$0)}' 文件名

或者

awk 'NR==m {print $0}' 文件名

打印文件的第m行到第n行

awk 'NR==m NR==n {print $0}' file_name

or

awk 'NR==m NR==n {printf("%s",$0)}' file_name

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值