日常积累------awk脚本

原创 2015年07月06日 23:16:49

有必要将最近的一些技术整理整理,今天的主要整理目标:awk脚本

awk 命令的名称来源于三位作者的首字母,awk命令主要用逐行扫描处理文本文件,并且能够一次读取多个文件。

1.举一个简单的例子:

awk -F '\t' '{print $1,$2,$NF}' a.txt

awk 脚本每次读取a.txt文件中的一行,每一行按照回车符'\t'分割,$1对应分割后字符串数组的第一个字段,$2对应第二个,$NF对应当前行的最后一个字段。

print 表示将这三个字段打印出来(默认间隔为空格,可以设置)。

2.设置输出字段间隔符号:

awk -F '\t' 'BEGIN{OFS="\t"}{print $1,$2}' a.txt
awk 脚本内部有一些常用变量,OFS变量存储输出字段的间隔符号,$0表示当前整行。

3.两个文件取交集

awk -F '\t' 'NR==FNR{a[$1]=$0}NR>FNR{if($1 in a){print}}' a.txt b.txt > c.txt

上面的命令实现了两个文件按照第一列取交集,NR变量存储截止到目前awk脚本读取的行数,FNR对应当前文件的行数,第一个判断式处理第一个文件,并且以第一个文件的首列作为键存储进入数组a,第二个表达式处理第二个文件,大括号里面判断第二个文件的第一列字段是否在数组a当中,如果在则输出。

文件a.txt,b.txt取差集(b-a)

awk -F '\t' 'NR==FNR{a[$1]=$0}NR>FNR{if(!($1 in a)){print}}' a.txt b.txt > c.txt
文件a.txt,b.txt取并集

awk -F '\t' 'NR==FNR{a[$1]=$0;print}NR>FNR{if(!($1 in a)){print }}' a.txt b.txt > c.txt

4.使用shell变量

awk -F '\t' 'print "'$x'"' a.txt
采用双引号套单引号+$符号

5.调用系统命令

awk -F '\t' '{cmd = "./a.exe" $2}; cmd | getline x;print x} a.txt
a.exe是一个工具需要传递参数,awk脚本中将第二个字段的变量传给a, cmd保存命令字符串。cmd | getline x 运行命令并将结果保存在x当中。

6.正则表达式使用内部变量

awk -F '\t' 'NR==FNR{a[$1] = $0} NR>FNR{flag = 1; for(x in a){if($1 ~ x){flag = 0; break}}if(flag == 1){print }}' dict.txt a.txt > c.txt

x 为内部变量如果使用其作为正则匹配项,直接调用即可。该命令实现了在a.txt中的第一列字段中过滤字典中的关键字。

7.内部命令

awk -F '\t' '{lens = split($1,a,"\\$")}{for (i in a){print i}}' a.txt

将每一行的第一个字段再按照$符号切分,并且打印所有符号。








相关文章推荐

awk&sed日常用法记录

1.删除只含tab键的行?```shell // -r 正则表达式 sed -r “s/\s+/d” file “`2.替换多个值echo abc | sed 's#\(a\)#\1\13...

模拟网络流量awk测试脚本

  • 2012年04月06日 11:09
  • 549B
  • 下载

日常维护SQL以及脚本

----调整DG的传输进程为ARCH ics:   alter system set  log_archive_dest_3 ='SERVICE=lics arch async noaffirm ...

AWK单行脚本快速参考

  • 2015年09月06日 19:13
  • 152KB
  • 下载

linux中shell脚本中awk的深入分析

  • 2011年08月06日 22:21
  • 17KB
  • 下载

sqlserver 日常检查脚本

--sqlserver  日常检查脚本 print '----------------------------' print ' 0.sqlserver all information  ' p...

数据库日常管理常用sql脚本

 / 目录: ###########查询类########### 关于session: kill session和kill -9 ...
  • wish503
  • wish503
  • 2016年11月29日 22:43
  • 352
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:日常积累------awk脚本
举报原因:
原因补充:

(最多只允许输入30个字)