删除文本文件中的非拉丁1字符

时间:2018-09-25 08:01:32

标签: regex sed utf-8 iso-8859-1

我必须替换大型数据集文件文本中的所有非拉丁1字符。 一个例子就像

LABEL   chini vich 妈妈媽媽 maama
LABEL   南支那海 南シナ海 shabadik ar h ngkhani shina saagar
LABEL   ॐ आप्यायन्तु ममाङ्गानि वाक्प्राणश्चक्षुः

其中第二列选项卡式空间拥有要查找的文本,并用空格替换。 可以使用character classes

来获得查找所有拉丁1字符的正则表达式。
echo "chini vich 妈妈媽媽 maama" | sed "s/[[:alnum:]]*//g"
    妈妈媽

我的目标是完全相反

echo "chini vich 妈妈媽媽 maama" | sed "s/(SOME REGEX)//g"
        chini vich maama

因此用空格\s替换任何非拉丁1字符序列的出现。 我试图否定字符类[:alnum:][^A-Za-z0-9],但它不起作用。

注意 由于第一列将不包含任何非拉丁1字符,并且是字母数字,因此无需将正则表达式应用于第二列,因此我认为可以将其应用于整行,因此在{{1} }就像awk。 对于仅具有非latin-1字符的行,如下面的示例所示,正则表达式将导致第二列为空:

$(0)

类似的问题Remove non-ASCII characters from CSV是关于删除非ASCI字符的,这里我们处理LABEL chini vich maama LABEL shabadik ar h ngkhani shina saagar LABEL ASCII扩展名。有关更多信息,请参阅What are the differences between ASCII, ISO 8859, and Unicode?

0 个答案:

没有答案