一個進程運行了整整一天還沒結束,本來應該只需要半天左右就可以全部build完成了,一步一步查原因,發現在uniq處理全角字符的問題上。
先看下面這個現象
[root@localhost build]$ cat text
12580
10086
20086
580
008
5
8
[root@localhost build]$ uniq text
12580
580
5
[root@localhost build]$
這個輸出,明顯不是想要的,這主要是全角字符所帶來的問題
在很多數據處理時,可能數據都是來源於用戶的輸入,所以這時一些全角字符或者是大小寫不一致的問題,就隨處可見了,大小寫的問題很容易想到要處理,全角字符也是需要處理或者設置處理環境的。
uniq命令在判斷兩個字符串是否相等的時候,和LC_ALL這個環境變量是有很大關係的,如果將其設置爲UTF8,那麼有可能一些不同的字符被判斷爲相同的。我們可以把這個環境變量的值設置爲C,這樣的話uniq就會一個一個字節的對兩個字符串進行比較,這也是我們想要的結果和方式。
如下:
[root@localhost build]$ export LC_ALL=C
[root@localhost build]$ uniq text
12580
10086
20086
580
008
5
8
[root@localhost build]$