本文雖然針對(duì)的是特殊字符“^@”,但對(duì)于其他不可見的特殊字符依然適用。核心思想就是利用cat -v將不可見字符轉(zhuǎn)變?yōu)榭梢娮址梢娮址强梢岳酶鞣N命令處理的。
-
今天處理一個(gè)文件的時(shí)候發(fā)現(xiàn)文件中字符間夾雜著特殊字符“^@”,這些特殊字符常態(tài)下是看不見的,但是可能會(huì)引發(fā)程序運(yùn)行問題。此文件是從windows SQL Server中導(dǎo)出的數(shù)據(jù),并傳到Linux上來進(jìn)行處理了。可以使用cat -v查看不可打印字符:
#看似正常 [root@localhost]/home/NEW_HW1# head OLD.ZIP-SHEGONG !@#qweasd412 19960718.+0. 513321262@qq.com qqq3356273 13260362351 wucheng25 ZHAOGANG55555 zl13994178341 ytmfnia qaz911018 #查看不可打印字符 [root@localhost]/home/NEW_HW1# head OLD.ZIP-SHEGONG | cat -v ^@!^@@^@#^@q^@w^@e^@a^@s^@d^@4^@1^@2^@ ^@1^@9^@9^@6^@0^@7^@1^@8^@.^@+^@0^@.^@ ^@5^@1^@3^@3^@2^@1^@2^@6^@2^@@^@q^@q^@.^@c^@o^@m^@ ^@q^@q^@q^@3^@3^@5^@6^@2^@7^@3^@ ^@1^@3^@2^@6^@0^@3^@6^@2^@3^@5^@1^@ ^@w^@u^@c^@h^@e^@n^@g^@2^@5^@ ^@Z^@H^@A^@O^@G^@A^@N^@G^@5^@5^@5^@5^@5^@ ^@z^@l^@1^@3^@9^@9^@4^@1^@7^@8^@3^@4^@1^@ ^@y^@t^@m^@f^@n^@i^@a^@ ^@q^@a^@z^@9^@1^@1^@0^@1^@8^@
-
查看文件類型
可以發(fā)現(xiàn)文件類型是data,根據(jù)man手冊(cè),data是file命令不能識(shí)別的文件類型[root@localhost]/home/NEW_HW1# file OLD.ZIP-SHEGONG OLD.ZIP-SHEGONG: data
dos2unix 命令無效
-
去除特殊字符^@
特殊字符^@并不是兩個(gè)字符,而是一個(gè)字符,一個(gè)使用“ctrl+V ctrl+@”才能打出來的字符。
網(wǎng)上提供了幾種辦法,但是沒有解決問題:# 方法1 [root@localhost]/home/NEW_HW1# head OLD.ZIP-SHEGONG | tr -d '^@' | cat -v ^@!^@^@#^@q^@w^@e^@a^@s^@d^@4^@1^@2^@ ^@1^@9^@9^@6^@0^@7^@1^@8^@.^@+^@0^@.^@ ^@5^@1^@3^@3^@2^@1^@2^@6^@2^@^@q^@q^@.^@c^@o^@m^@ ^@q^@q^@q^@3^@3^@5^@6^@2^@7^@3^@ ^@1^@3^@2^@6^@0^@3^@6^@2^@3^@5^@1^@ ^@w^@u^@c^@h^@e^@n^@g^@2^@5^@ ^@Z^@H^@A^@O^@G^@A^@N^@G^@5^@5^@5^@5^@5^@ ^@z^@l^@1^@3^@9^@9^@4^@1^@7^@8^@3^@4^@1^@ ^@y^@t^@m^@f^@n^@i^@a^@ ^@q^@a^@z^@9^@1^@1^@0^@1^@8^@ # 方法2 [root@localhost]/home/NEW_HW1# head OLD.ZIP-SHEGONG | sed 's/\^@//g' | cat -v ^@!^@@^@#^@q^@w^@e^@a^@s^@d^@4^@1^@2^@ ^@1^@9^@9^@6^@0^@7^@1^@8^@.^@+^@0^@.^@ ^@5^@1^@3^@3^@2^@1^@2^@6^@2^@@^@q^@q^@.^@c^@o^@m^@ ^@q^@q^@q^@3^@3^@5^@6^@2^@7^@3^@ ^@1^@3^@2^@6^@0^@3^@6^@2^@3^@5^@1^@ ^@w^@u^@c^@h^@e^@n^@g^@2^@5^@ ^@Z^@H^@A^@O^@G^@A^@N^@G^@5^@5^@5^@5^@5^@ ^@z^@l^@1^@3^@9^@9^@4^@1^@7^@8^@3^@4^@1^@ ^@y^@t^@m^@f^@n^@i^@a^@ ^@q^@a^@z^@9^@1^@1^@0^@1^@8^@
-
試了網(wǎng)上的方法,沒有成功,思考片刻,靈機(jī)一動(dòng),解決了問題:
# 先使用cat -v將不可見字符轉(zhuǎn)為可見字符再轉(zhuǎn)換不就可以了嗎 # 注意,因?yàn)檗D(zhuǎn)變?yōu)榱丝梢娮址証@成為了兩個(gè)字符^和@ [root@localhost]/home/NEW_HW1# head OLD.ZIP-SHEGONG | cat -v | tr -d '^@' | cat -v !#qweasd412 19960718.+0. 513321262qq.com qqq3356273 13260362351 wucheng25 ZHAOGANG55555 zl13994178341 ytmfnia qaz911018 # or [root@localhost]/home/NEW_HW1# head OLD.ZIP-SHEGONG | cat -v | sed 's/\^@//g' | cat -v !@#qweasd412 19960718.+0. 513321262@qq.com qqq3356273 13260362351 wucheng25 ZHAOGANG55555 zl13994178341 ytmfnia qaz911018
-
進(jìn)行真正的轉(zhuǎn)換
[root@localhost]/home/NEW_HW1# cat -v OLD.ZIP-SHEGONG | tr -d '^@' > t # Everything is OK [root@localhost]/home/NEW_HW1# du -mh t 1.1G t [root@localhost]/home/NEW_HW1# du -mh OLD.ZIP-SHEGONG 2.2G OLD.ZIP-SHEGONG # 文件類型也被file命令識(shí)別了 [root@localhost]/home/NEW_HW1# file t t: ASCII text [root@localhost]/home/NEW_HW1# head -2 t | cat -v !#qweasd412 19960718.+0.
利用cat -v去除文件中的不可見特殊字符
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
推薦閱讀更多精彩內(nèi)容
- groupadd,useradd,passwd,gpasswd,id,su groupadd image.png ...
- 正則表達(dá)式 關(guān)于正則表達(dá)式相信很多學(xué)計(jì)算機(jī)的人都聽說過 尤其是做編程行業(yè)的人 那什么是正則表達(dá)式 正則表達(dá)式,又稱...
- 近兩天在CentOS7上安裝了oracle,在網(wǎng)上找了一些資料,發(fā)現(xiàn)不是很全面,為了方便以后再次安裝,所以...
- 【MySQL】Linux下MySQL 5.5、5.6和5.7的RPM、二進(jìn)制和源碼安裝 1.1BLOG文檔結(jié)構(gòu)圖 ...
- Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...