- 样本数据
$ for i in 1 2 3 4 1 1 2 3 ; do echo $i ; done
1
2
3
4
1
1
2
3
- 去重语句
$ for i in 1 2 3 4 1 1 2 3 ; do echo $i ; done | awk '!a[$0]++ {print}'
1
2
3
4
- 要点解释
1. !a[$0]++ 此部分为逻辑表达式,{print}为action语句,print默认参数为$0
2. a[$0]默认为char类型数组,默认值为null,a[$0]添加++后转换为int数组,默认值为0
3. 值第一次出现时,a[$0]++的值就是默认值0,!取反后值变为1,即表示需要执行后面的print语句,且a[$0]的值自增为1
4. 值第二次出现时,参照上一条,此时a[$0]的值为1,取反后为0,即不打印