在Linux中删除文件中的所有空格

31

如何在Linux中删除给定文件中的所有空格?


在文件本身内部还是在文件名中? - Buggabill
4个回答

66

根据你对空白字符的定义,类似以下内容:

tr -d ' \t\n\r\f' <inputFile >outputFile

会起作用。

1
+1 tr比sed“便宜”,而且你可以避免调用两个程序。 - Stephen P
12
GNU tr有一个类[:space:]表示"所有水平或垂直空格"(我认为"或"应该是"和")。所以,tr -d '[:space:]'也可以实现相同的效果。 - camh
也包括\v(垂直制表符,也包含在[:space:]中)。 - Dennis Williamson
4
我认为 tr 在处理 UTF-8 数据甚至 ISO-8859-1 数据时都不能正常工作,只能处理纯 ASCII 数据。 - tchrist
2
@tchrist:一些版本的tr可以处理其他字符集。在非ASCII情况下,建议使用[:space:]。 - Darron
显示剩余2条评论

16
sed 's/\s//g' input.txt | tr -d '\n'

1
请问为什么 's/\s//g' 中的 \s 表示空格?谢谢。 - so.very.tired

11
sed 's/\s//g'|tr -d '\n'

3
如果您有UTF-8数据,最好这样做:
perl -CS -pe 's/\p{Space}//g' < input > output

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接