awk常用命令总结

awk常用命令总结

1、打印文件的第一列(域)     : awk ‘{print $1}’ filename
2、打印文件的前两列(域)     : awk ‘{print $1,$2}’ filename
3、打印完第一列,然后打印第二列  : awk ‘{print $1 $2}’ filename
4、打印文本文件的总行数      : awk ‘END{print NR}’ filename
5、打印文本第一行         :awk ‘NR==1{print}’ filename
6、打印文本第二行第一列      :sed -n “2p” filename | awk ‘{print $1}’


下面是利用awk命令实现单词去重的脚本。

#! /bin/awk -f

{
	for (i = 1; i <= NF; i++)
		{
			++word[$i]

			if (word[$i] == 1)
				printf("%s ", $i)
		}
		printf("\n")
}

简单介绍一下上面的脚本
awk处理文本的方式是逐行处理,因此,对于文件的每一行,都会执行上面的for循环。在执行for循环时,awk已经把这一行中所有以空格间隔的单词都分隔开了,并保存在诸如$1,$2这样的变量中。NF则是这一行中所包含的字段的数目,也就是单词的个数。

for 循环的工作就是以该单词做为下标,计算文件中每个单词出现的次数。如果单词出现的次数为1,则输出此单词,否则不输出。这里用到了awk的关系数组?? awk的数组与C语言不同,数组的下标不仅可以是数字,也可以是一个字符串,也就是说,诸如word[“hello”]这样的数组元素是允许的。上面的代码就是使用关系数组的一个例子。

在日常处理文本时,虽然VIM是最主要的文件编辑工具,但它并不是唯一可以高效完成工作的工具。在适当的时候,使用适当的工具,才是高效完成工作的最好方式。

生活不同于学校中的考试,所有的事情并不是仅有一个正确答案!

变量NF 代表每一行拥有的字段总数
变量NR 代表目前awk所处理的是“第几行”数据
变量FS 代表目前的分割字符,默认是空格键

如有侵权请及时联系删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值