sed和awk这本书看了好久了,sed部分将就看完了,awk部分基本没怎么看。上次有人问起一个比较文件的问题,发现awk来解决非常的简单。 比较两个文件A、B,打印出包含在A中的,但是不包含在B中的所有行。 根据题目要求,awk的解决方法如下: awk ‘NR==FNR {a[$0]=1} NR>FNR && !a[$0] {print $0}’ B A 里面NR表示行号,FNR表示当前文件中的行号。NR==FNR的时候,表示此时正在读取B文件,以B中的$0为索引,建立一个数组,并且都赋值为1。 当NR>FNR 的时候,表示此时在读取A文件,如果a[$0]为1,那么就表示这个$0是在B里面也存在的,是吧?所以,如果要B里面不存在的,那么就得是a[$0]不为1的,就是没做过赋值的。所以了,就是这个了。 进阶一下,比较两个文件A、B,打印包含在A中第一列,但是不包含在B中第二列的整行。 类似的: awk ‘NR==FNR {a[$2]=1} NR>FNR && !a[$1] {print}’ B A 比较文件内容还可以用comm命令,还有人提出了grep命令,例如第一个问题: grep -vwfB A
-
-
近期文章
-
What I'm Doing...
- http://t.co/rXXosE5q 试了几个国内的 dns 解析不出来了。。不知道为什么。。 4 hrs ago
- 又下班啦 节后第一个工作周感觉好累 (at 维亚大厦) 2 days ago
- twitbird 没有类似 read it later 的支持 手机上面看到感兴趣的链接 只能加 fav 3 days ago
- More updates...
Powered by Twitter Tools
-
标签
-
近期评论
- 清尘 发表在《用 emacs 写 blog》
- 第一次使用org2blog撰写博客文章 | Liuyix 发表在《介绍下 org2blog》
- zhjx 发表在《老文一篇,关于小毛》
- Org发布博客 | etimecowboy 发表在《介绍下 org2blog》
- 合肥SEO 发表在《介绍下 org2blog》