Sed
替換 txt 文件中的任何字母的 excipt 範圍
請我有一個 txt 文件,我想替換
_
除此字母範圍之外的任何內容[\0600-\06FF]
。喜歡
sed 's/^[\0600-\06FF]/_/g' < a. txt > b. txt
不和我一起工作。
如果輸入以 UTF-8 編碼並且您的系統具有 C.UTF-8 語言環境並且您的 shell 支持 zsh 的
$'\uXXXX'
運算符,則要將 Unicode 程式碼點超出 0x600 - 0x6ff 範圍的每個字元替換為_
,您可以執行以下操作:export LC_ALL=C.UTF-8 tr -c $'\u600-\u6ff' '[_*]' < a.txt > b.txt
但是,它不適用於一些
tr
不支持多字節字元的實現,包括 GNU 或busybox。你可能有更多的運氣:export LC_ALL=C.UTF-8 sed $'s/[^\u600-\u6ff]/_/g' < a.txt > b.txt
雖然它不會替換換行符(你可以通過管道來
tr '\n' _
實現)。或者你可以使用
perl
:perl -C -pe 's/[^\x{600}-\x{6ff}]/_/g' < a.txt > b.txt