如何使用 sed 命令删除所有标点符号?

如何使用 sed 命令删除所有标点符号?

我正在尝试使用该sed命令从文本文件中删除所有标点符号,但我不太知道如何操作。

答案1

如果“标点符号”是指集合中的任何字符

!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

(这是一组“POSIX 标点符号”,用[:punct:]正则表达式编写)如果“删除”的意思是“完全删除”,那么这样做会更有效tr

tr -d '[:punct:]' <file.in >file.out

这告诉tr我们删除输入流中上述集合中的所有字符,从名为 的文件中读取file.in并将结果写入某个文件file.out

对于sed,您会做同样的事情

sed 's/[[:punct:]]//g' <file.in >file.out

...但我预计这会稍微慢一些(可能仅在大输入数据上才会明显如此)。

相关内容