gpt4 book ai didi

regex - sed 在 Linux 中替换 ASCII 字符

转载 作者:IT王子 更新时间:2023-10-29 01:05:33 25 4
gpt4 key购买 nike

我想替换文件中的ASCII/英文字符,并保留Linux环境下的unicode字符

INSERT INTO text (old_id,old_text,old_flags) VALUES (2815829,'[[चित्र:Youth-soccer-indiana.jpg|thumb|300px|right|बचपन का खेल.एसोसिएशन फुटबॉल, ऊपर दिखाया गया है, एक टीम खेल है जो सामाजिक कार्यों को भी प्रदान करता है।]]\n\n\'\'\'खेल\'\'\', कई [[नियमों]] एवं [[रिवाजों]] द्वारा संचालित होने वाली एक [[प्रतियोगी]] गतिविधि है। \'\'खेल\'\' 

我试过了

~$ sed 's/[^\u0900-\u097F]/ /g' hi.text but the range

但是我明白了

sed: -e expression #1, char 23: Invalid range end

我也试过了,好像可以,但不完全

sed 's/[a-zA-Z 0-9`~!@#$%^&*()_+\[\]\\{}|;'\'':",.\/<>?]//g' enwiki-latest-pages-articles-multistream_3.sql  >result.txt

谁能告诉我如何让 sed 使用 unicode 范围正则表达式

最佳答案

ASCII 代码的范围是 0 到 127(含)。在该范围内,0-31 和 127 是控制字符。编码为 UTF-8 的 Unicode 使用 128 到 255(含)范围内的数据字节。

因为sed是面向行的,换行符(代码9是control/J)被特殊对待。您的文件可能包含制表符(代码 8)和回车符(代码 13)。但在实践中,您可能只关心制表符和可打印的 ASCII。

波浪号 (~) 是代码 126(很容易知道)。

所以:

sed -e 's/[ -~\t]/ /g'

其中 \t 是 ASCII 制表符(根据实现的不同,您可能需要文字制表符)将删除所有可打印的 ASCII,保留未触及的换行符和 UTF-8。

关于regex - sed 在 Linux 中替换 ASCII 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33670231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com