[leo@leo ~]$ cat removerepetive
1111
2222
3333
1111
3333
2222
4444
1111
2222
3333
4444
2222
一。 UNIQ 用法
补充一下uniq的用法
1. 无选项参数: 将源文件中的连续多相同行简化为一行,然后输出全文
2. -d : 将源文件中的连续多相同行简化为一行,然后输出这些行
2. -u : 排除源文件中的连续多相同行,然后输出其他行
二。 AWK
[leo@leo ~]$ cat removerepetive | awk '!i[$1]++'
1111
2222
3333
4444
1、awk数组知识
2、awk的基本命令格式 awk 'pattern{action}'
省略action时,默认action是{print},如awk '1'就是awk '1{print}'
3、var++的形式:先读取var变量值,再对var值+1
以上述数据为例,对于
awk '!i[$1]++'
awk处理第一行时: 先读取i[$1]值再自增,i[$1]即i[1]值为空(0),即为awk '!0',即为awk '1',即为awk '1{print}'
awk处理第二行时: 先读取i[$1]值再自增,i[$3]即a[1]值为1,即为awk '!1',即为awk '0',即为awk '0{print}'
.............
最后实现的效果就是对于$1是第一次出现的行进行打印,也就是去除$1重复的行
最重要的awk '1' 为打印 awk '0' 为不打印,所以只有第一次出现的行才会大于0 。所以只会打印一次!!!
转载于:https://blog.51cto.com/kevinleo/648776