我必须替换大型数据集文件文本中的所有非拉丁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?