1月10晚上在羣裏slamdunk聊起他要在幾百個電話號碼裏找出重複的來,我突然想起今天上午我學的sed命令來了,就叫slamdunk把那個有電話的文本文件給我,讓我練練,slamdunk就把電話號碼給我了。
一些簡單的命令而功能強大的命令還不會,下面只是一個笨方法。
其結構大概是這樣的:
[8615940364717] to [\\.\COM10--8615801783740]
[8613664604507] to [\\.\COM10--8615801783740]
[8613831791046] to [\\.\COM10--8615801783740]
[8615959678020] to [\\.\COM10--8615801783740
[8613785642473] to [\\.\COM10--8615801783740
[8613915219073] to [\\.\COM10--8615801783740]
[8613859429423] to [\\.\COM10--8615801783740
[8613811268177] to [\\.\COM10--8615801783740
[8613819131161] to [\\.\COM10--8615801783740]
8613508305305] to [\\.\COM10--8615801783740]
[8613646175482] to [\\.\COM10--8615801783740]
8613575017712] to [\\.\COM10--8615801783740
8613932035877] to [\\.\COM10--8615801783740
[8615972318131] to [\\.\COM10--8615801783740]
[8615962985577] to [\\.\COM10--8615801783740]
[8613585458567] to [\\.\COM10--8615801783740]
8613851459841] to [\\.\COM10--8615801783740]
不過還有幾個個別的。
下面先說說我的笨命令吧
1、先直接在XP上覆制,用secureCRT連到LINUX,vi建一個文件,直接複製上去,省的有些回車符不一樣。取名:phone
cat phone | cut -d ']' -f 1 | sed 's/\[86//g' > phone2
(因爲只需要第一列的電話,把以先把第一列提出來,然後把開頭是“[86”替換成無,就是刪除了。)
3、cat phone | cut -d ']' -f 1 | sed 's/\[86//g' | sed 's/\[//g' > phone3
cat phone3 | sed 's/^86//g' | sed 's/^009//g' | sed 's/0060//g' | grep '^1' | more > phone4
繼續替換一些別的形式開頭的,主要是想把格式都一樣的排列起來。怕亂了,所以每做一些改變就存一下。用sed替換完了的結果,有的行還有些日期什麼的,還好這個文件不是太大,還能大概看一下。然後就grep '^1'這個把電話號碼全部找出來。如果有1月開頭的行也不怕,下面還可以過濾呢。
4、cat phone4 | sort -n | uniq -c > phone5
用sort –n 進行排序 ,用uniq –c 進行計算並去掉重複的。這樣在phone5裏有會那個重複幾次有顯示了。
5、cat phone5 | sort –n
上面phone5裏是在那裏重複了就在那裏標記,而不是在一起,不太容易看,再用sort –n排一次序,就可以按重複1次、2次、3次的這麼排下來了。
這樣就找出重複的出來了,我知道這是一種笨方法,還請高手們指教一些更簡單,更高效的方法。謝謝!