我花了相當一段時間後,決定發佈一個問題,但仍然沒有弄清楚問題所在。還讀了一堆看似相關的帖子,沒有一個真正適合我的簡單(?)問題。使用sed,正則表達式如何匹配中文字符?
所以我有一個包含華中國字符一個可能大的文本文件(> 1000線),與像採樣線:
"ref#2-5-1.jpg#2#一些 <variable> 內容#pic##" (the Chinese just means "some content").
所有需要修改的是一個空間應該之間插入每一個字符,如果沒有的話:
我天真地用類似下面簡單的東西開始,但沒有比賽在所有:
sed -e 's/\([\u4E00-\u9fff]\)/\1 /g' <test_utf_sed.txt > test_out.txt
其中4E00-9fff應該是漢語普通話的代碼範圍。 Unamazingly,這並沒有工作,所以我也曾經想嘗試
sed -e 's/\([一-龻]\)/hello/g' <test_utf_sed.txt > test_out.txt
這失敗,因爲我的bash無法顯示(?)中的「一」字。
然後我做了一些基本的測試,這也失敗了:
sed -e 's/\(\u4E00\)/hello/g' <test_utf_sed.txt > test_out.txt //一
sed -e 's/\(\u4E9B\)/hello/g' <test_utf_sed.txt > test_out.txt //些
同樣的,另一種符號來表示UTF編碼(這裏發現計算器):
sed -e 's/\(\u'U+4E00\)/hello/g' <test_utf_sed.txt > test_out.txt
1)作爲工具來處理與雙字節字符,sed是正確的選擇?
2)是sed能處理Unicode的所有,還是我需要一個特殊的開關?
3)我不在尋找這樣一種解決方法解決方案:
step1: insert space after each character
//like 's/\(.\)/\1 /g')
step2: remove space after each chacter which is not a Chinese character
//like 's/\([a-zA-Z0-9]\) /\1/g')
我知道如何做到這一點,但它是unelegant而且容易出錯。這一定是可能的使用utf-8在sed中的正則表達式。
4)我的環境是的bash-3.2上的的MacOS 10.6.8(老氣OS)。
5)如果你知道任何指點一下開正則表達式,如onliners庫處理中國文字或語言處理的,這將是巨大的佳品。
非常感謝提前,您的幫助深表感謝!
http://stackoverflow.com/questions/8562354/remove-unicode-characters-from-textfiles-sed-other-bash-shell-methods – ooga