技巧: 用 uniq 除去重复行
2012-04-16 11:44
218 查看
http://www.ibm.com/developerworks/cn/linux/l-tip-prompt/l-tiptex6/
认识您的文本实用程序
Jacek Artymiak (jacek@artymiak.com),
自由顾问、开发人员和作家
简介: 重复行通常不会造成问题,但是有时候它们的确会引起问题。此时,不必花上一个下午的时间来为它们编制过滤器,uniq 命令便是唾手可得的好工具。了解一下它是如何节省您的时间和精力的。
进行排序之后,您会发现有些行是重复的。有时候该重复信息是不需要的,可以将它除去以节省磁盘空间。不必对文本行进行排序,但是您应当记住
清单 1. 用 uniq 除去重复行
警告:请不要使用
如果您希望您的工作轻松点,比如只显示唯一的或重复的行,那么该怎么办呢?您可以用
清单 2. 使用 -u 和 -d 选项
您还可以用
清单 3. 使用 -c 选项
就算
还有另一个选项
有什么问题或意见吗?我非常乐意收到您的来信 - 请发送邮件到 jacek@artymiak.com。
下一次,我们将研究
认识您的文本实用程序
Jacek Artymiak (jacek@artymiak.com),
自由顾问、开发人员和作家
简介: 重复行通常不会造成问题,但是有时候它们的确会引起问题。此时,不必花上一个下午的时间来为它们编制过滤器,uniq 命令便是唾手可得的好工具。了解一下它是如何节省您的时间和精力的。
进行排序之后,您会发现有些行是重复的。有时候该重复信息是不需要的,可以将它除去以节省磁盘空间。不必对文本行进行排序,但是您应当记住
uniq在读取行时会对它们进行比较并将只除去两个或更多的连续行。下面的示例说明了它实际上是如何工作的:
清单 1. 用 uniq 除去重复行
$ cat happybirthday.txt Happy Birthday to You! Happy Birthday to You! Happy Birthday Dear Tux! Happy Birthday to You! $ sort happybirthday.txt Happy Birthday Dear Tux! Happy Birthday to You! Happy Birthday to You! Happy Birthday to You! $ sort happybirthday.txt | uniq Happy Birthday Dear Tux! Happy Birthday to You! |
uniq或任何其它工具从包含财务或其它重要数据的文件中除去重复行。在这种情况下,重复行几乎总是表示同一金额的另一个交易,将它除去会给会计部造成许多困难。千万别这么干!
如果您希望您的工作轻松点,比如只显示唯一的或重复的行,那么该怎么办呢?您可以用
-u(唯一)和
-d(重复)选项来做到这一点,例如:
清单 2. 使用 -u 和 -d 选项
$ sort happybirthday.txt | uniq -u Happy Birthday Dear Tux! $ sort happybirthday.txt | uniq -d Happy Birthday to You! |
-c选项从
uniq中获取一些统计信息:
清单 3. 使用 -c 选项
$ sort happybirthday.txt | uniq -uc 1 Happy Birthday Dear Tux! $ sort happybirthday.txt | uniq -dc 3 Happy Birthday to You! |
uniq对完整的行进行比较,它仍然会很有用,但是那并非该命令的全部功能。特别方便的是:使用
-f选项,后面跟着要跳过的字段数,它能够跳过给定数目的字段。当您查看系统日志时这非常有用。通常,某些项要被复制许多次,这使得查看日志很难。使用简单的
uniq无法完成任务,因为每一项都以不同的时间戳记开头。但是如果您告诉它跳过所有的时间字段,您的日志一下子就会变得更加便于管理。试一试
uniq -f 3 /var/log/messages,亲眼看看。
还有另一个选项
-s,它的功能就像
-f一样,但是跳过给定数目的字符。您可以一起使用
-f和
-s。
uniq先跳过字段,再跳过字符。如果您只想使用一些预先设置的字符进行比较,那么该怎么办呢?试试看
-w选项。
有什么问题或意见吗?我非常乐意收到您的来信 - 请发送邮件到 jacek@artymiak.com。
下一次,我们将研究
nl。到时候见!
相关文章推荐
- 用 uniq 除去重复行(Shell技巧1)
- 技巧: 用 uniq 除去重复行
- 用 uniq 除去重复行
- 用 uniq 除去重复行
- 用 uniq 除去重复行
- sort uniq 除去重复行
- shell除去重复的行——uniq命令
- 用 uniq 除去重复行
- 用 uniq 除去重复行
- linux 下的文本处理——除去重复行uniq命令
- 过滤同一个表中多个字段重复数据的SQL技巧
- JavaScript避免代码的重复执行经验技巧分享
- [导入]妙用cache检验用户是否重复登陆_asp.net技巧
- Vim技巧之重复
- 数组除去重复
- PHP技巧:何避免页面刷新数据重复写入数据库
- [数字技巧]重复数字统计算法的空间优化
- php str_replace技巧-避免重复替换
- 项目总结之防止连续点击打开两个重复页面的技巧
- js/JQUERY json数组除去重复对象