我想从俄语和阿拉伯字母(“ |”)之外的所有字符中清除文件和空格标记。让我们以阿拉伯字母开头。所以我有:
cat file.tzt | sed 's/[^\u0600-\u06FF]//g'
sed: -e expression #1, char 21: Invalid range end.
我尝试过[\ u0621- \ u064A]-相同。 我也尝试使用{Arabic},但它根本无法正确清除文件。
错误对我来说有点奇怪。显然是064FF> 0621。
所以,总的来说,我想要这样的东西:
cat file.tzt | sed 's/[^\u0600-\u06FFа-яА-Я |]//g'
我对awk或任何其他实用程序都还可以,但是据我所知sed稳定可靠。
答案 0 :(得分:3)
Perl理解UTF-8:
perl -CSD -pe 's/[^\N{U+0600}-\N{U+06FF}]//g' -- file.txt
-C
支持UTF-8,S
代表stdin / stdout / stderr,D
代表任何I / O流。您还可以使用Unicode属性:
s/\P{Cyrillic}//g