gpt4 book ai didi

linux - 如何告诉 sed "do not remove some characters"?

转载 作者:太空狗 更新时间:2023-10-29 12:20:06 24 4
gpt4 key购买 nike

我有一个包含阿拉伯字符和一些其他字符(标点符号、数字、英文字符...)的文本文件。我怎样才能告诉 sed 删除文件中的所有字符,阿拉伯字符除外?简而言之,我可以说我们通常会告诉 sed 删除/替换某些特定字符并打印其他字符,但现在我正在寻找一种方法来告诉 sed 只打印我想要的字符,并删除所有其他字符。

最佳答案

使用 GNU sed,您应该能够通过十六进制代码指定字符。您可以在字符类中使用它们:

sed 's/[\x00-\x7F]//g' # hex notation
sed 's/[\o000-\o177]//g' # octal notation

您也应该能够使用 tr 命令实现相同的效果:

tr -d '[\000-\177]'

这两种方法都假定您的输入文件采用 UTF8 编码。多字节字符设置了最高位,因此您可以简单地去除所有标准 ASCII(7 位)字符。


要保留除了一些明确定义的字符之外的所有内容,请使用否定字符类:

sed 's/[^characters you want to keep]//g'

使用类似于 [^…]\+ 的模式可能会提高正则表达式的性能。

关于linux - 如何告诉 sed "do not remove some characters"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12329660/

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