歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 如何刪除腳本中的所有漢字

如何刪除腳本中的所有漢字

日期:2017/3/1 17:22:09   编辑:關於Linux
今天有網友問我一個問題,問題是他要在一個腳本中刪除所有的中文漢字。這個問題一下子使我有點犯難,在腳本中刪除一兩個漢字,那我是手到擒來,匹配所有漢字倒是第一次。於是淨下來仔細想了一下,漢字在計算機系統裡是按照一定的編碼格式表示的,就是我們常說的如:GB2312、GB18030等,那麼這個問題就應該好解決了,只要符合這個編碼格式的就都是漢字了。於是上網搜索漢字的編碼格式。得出一下結果:
從GB2312-1980編碼開始,漢字都是采用雙字節編碼。為了與系統中基本的ASCII字符集區分開,所有漢字編碼的每個字節的第一位都是1。例如:“啊”字的編碼為0xB0A1。GB2312的漢字編碼規則為:第一個字節的值在0xB0到0xF7之間,第二個字節的值在0xA0到0xFE之間。GB12345和GB13000是對GB2312-1980的擴充,所有已經包含在GB2312中的漢字編碼不變,另外增加更多的碼位。其編碼規則大致為:第一個字節的值在0x81到0xFE之間,第二個字節的值在0x40到0xFE之間。由於GB13000是對GB2312的擴展,所以也被成為GBK。
那剩下的問題就簡單了,我用sed把符合這些編碼格式的用空替代不就解決了嗎。
sed的命令表達式如下:
#sed -r "s/[\x81-\xFE][\x40-\xFE]//g" file
執行一下發現有問題,原來系統的編碼設置問題,更新一下:
#LANG=C sed -r "s/[\x81-\xFE][\x40-\xFE]//g" file
C代表英文環境ASCII 編碼格式,再次運行,一切OK。

本文出自 “小苗” 博客
Copyright © Linux教程網 All Rights Reserved