歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

linux awk刪除文本重復行需要注意強制類型轉換的問題

希望刪除IP地址前三段相同的多余重復行。測試文本如下:

# cat 1.txt
2.1.10.1
2.1.10.2
2.11.0.1
2.11.0.2

如果數組下標不加引號,在這個特殊的情況下會被強制轉換為數字,最終導致統計失敗:

# awk 'BEGIN{FS=OFS="."}{if(!a[$1.$2.$3]++)print}' 1.txt
2.1.10.1

# awk -F '.' '{a[$1.$2.$3]++;}END{for(i in a)print i"  "a[i]}' 1.txt
2110  4

數組下標加上引號之後,一切恢復正常:

# awk 'BEGIN{FS=OFS="."}{if(!a[$1"."$2"."$3]++)print}' 1.txt
2.1.10.1
2.11.0.1

# awk -F '.' '{a[$1"."$2"."$3]++;}END{for(i in a)print i"  "a[i]}' 1.txt
2.11.0  2
2.1.10  2

擴展閱讀:

http://www.gnu.org/software/gawk/manual/html_node/Variable-Typing.html

Copyright © Linux教程網 All Rights Reserved