gpt4 book ai didi

bash - 尝试从 UNIX 文件中删除不可打印的字符(垃圾值)

转载 作者:行者123 更新时间:2023-11-29 09:19:04 29 4
gpt4 key购买 nike

我正在尝试从我的文件中的记录中删除不可打印的字符(例如 ^@)。由于文件中的记录量太大,因此使用 cat 不是一种选择,因为循环花费了太多时间。我尝试使用

sed -i 's/[^@a-zA-Z 0-9`~!@#$%^&*()_+\[\]\\{}|;'\'':",.\/<>?]//g' FILENAME

^@ 字符仍未删除。我也尝试使用

awk '{ sub("[^a-zA-Z0-9\"!@#$%^&*|_\[](){}", ""); print } FILENAME > NEW FILE 

但这也没有帮助。

有人可以建议一些替代方法来删除不可打印的字符吗?

使用 tr -cd 但它正在删除重音字符。但文件中需要它们。

最佳答案

也许你可以使用 [:print:] 的补码,它包含所有可打印的字符:

tr -cd '[:print:]' < file > newfile

如果你的 tr 版本不支持多字节字符(似乎很多都不支持),这对我来说适用于 GNU sed(使用 UTF-8 语言环境设置):

sed 's/[^[:print:]]//g' file

关于bash - 尝试从 UNIX 文件中删除不可打印的字符(垃圾值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34412754/

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