今天在論壇上瞎逛,看見一條關於awk使用的帖子,去除重複域,不是很瞭解命令,於是網上找了下,在次分享下自己的理解。
- [root@slave02 test]# cat awk
- aa bb cc
- aa cc bb
- aa bb ac
- bb aa cc
- bb cc aa
- bb aa ac
- [root@slave02 test]#
- [root@slave02 test]# cat awk | awk -F" " '!a[$1$2]++{print $1$2}'
- aabb
- aacc
- bbaa
- bbcc
- [root@slave02 test]#
大家先看這個例子,很容易發現 !a[$1$2]++ 是用來去除重複域的 $1 表示第一個域 ,
-F“ ” 表示用雙引號中間的字符來分割域
!a[$1$2]++ 表示第一個域和第二個域相同的,只打印一行 。
再來看兩個例子
1:
- [root@slave02 test]# cat awk | awk -F" " '!a[$1]++{print $1}'
- aa
- bb
- [root@slave02 test]#
2:
- [root@slave02 test]# cat awk | awk -F" " '!a[$2]++{print $2}'
- bb
- cc
- aa
- [root@slave02 test]#
如有不對之處,請大家指正。