uniq
uniq是用来从排序好的结果中删除重复的行,一般与sort结合使用。sort命令可以使用-u选项代替uniq。
uniq必须是处理已经排序过的数据,否则不会产生任何影响,如下所示:
下面是uniq命令的常用选项:
选项 | 描述 |
-c | 输出所有的重复航并且每行开头显示重复的次数(记数) |
-d | 只输出重复行,而不是所有的文本行(找出重复的行) |
-f n | 忽略每行的前n个字段,字段是由空格分隔的。 |
-s n | 忽略每行开始的前n个字符 |
-u | 输出所有的行,重复的行只输出一次 |
-i | 比较文本行的时候不区分大小写 |
cut
cut命令是用来从一行中抽取文本(抽取列),可以接受多个文件为参数或处理标准输出。
参数 | 描述 |
-c char_list | 从文本中抽出由char_list定义的文本,char_list可能由一个或者多个逗号分隔的数值区间组成。 例如:cut -c 7-10取出每行的第7到第十个字符 |
-f field_list | 从文本中抽取一个或多个由field_list定义的字段,字段之间可以由逗号分隔 |
-d deli_char | 在使用-f选项时要使用分隔符来区分字段,默认的分隔符是制表符,可以使用-d来手动指定分隔符。 |
由于cut抽取文本不灵活,所以cut 命令最好用来从其它程序产生的格式化文件中抽取文本,而不是从人们直接输入的文本中抽取。
因为我们的 /etc/passwd文件是由冒号分隔开的,最好用 cut 来抽取字段而不是字符。这是因为每行不太可能包含相同的字符数,这就使计算每行中字符的位置变得困难或者是不可能。