1

我正在尝试使用 spark reader 读取文件。Spark 阅读器遇到控制字符如^M, ^H, ^O,时会拆分文件中的记录^P

为了调试这个问题,我尝试手动删除文件中的控制字符并使用 spark shell 测试记录长度。

我试图删除所有控制字符并检查记录长度:

sed -i 's/^[:print:]/ /g' <filename>

我发现它也在替换标点符号,比如?在太空。请提出有助于将所有控制字符替换为空格的命令。

4

1 回答 1

1

^在括号表达式之外使用 when 表示字符串的开始。括号表达式之外的[:print:]POSIX 字符类不匹配任何可打印的字符,它匹配冒号r、、、、、、字符。pnit

您可以使用

sed -i 's/[^[:print:]]/ /g' < filename>

它将用文字空格字符替换每个不可打印的字符。

于 2020-12-27T13:01:32.150 回答