【问题标题】:Remove space in a file efficiently [closed]有效地删除文件中的空间[关闭]
【发布时间】:2016-03-22 08:56:33
【问题描述】:

我有一个非常大的文件,我想删除文件中的空格字符。

'sed' 可以使用,但是速度很慢。

是否有任何命令可以使用fixed string 代替regex 来替换或删除空格。

【问题讨论】:

  • tr -d ' ' 不工作?
  • 最接近的投票结果是“要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题对于 Stack Overflow 来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决该问题所做的工作。”这可能不是很离题,因为你问的是通用的 Unix 工具,但 SO 更多的是关于编程;这个问题更适合 Unix/Linux 或 SuperUser。
  • “巨大”有多大?
  • @TomZych,因为 OP 已将 Perl 标记为可能的解决方案,所以我不同意它应该被关闭或移动。
  • @md4:我可能应该澄清这不是我的近距离投票。但我可以看到选民的想法。如果这是一个通用工具问题,它更适合 U/L 或 SU。如果是编程问题,那么代码在哪里?

标签: bash perl awk replace sed


【解决方案1】:

您可以使用tr 命令(更多信息请参见手册页):

cat filename | tr -d "\t\n\r"

它也可以选择定义字符类。例如:

删除所有空格:

cat filename | tr -d "[:space:]"

删除所有水平空白:

cat filename | tr -d "[:blank:]"

【讨论】:

  • 或者,更简洁地说,tr -d '...' < filename
  • sed 需要 2m9.665str 需要`0m3.301s`!
  • Perl 在这些方面也非常快:perl -pe 's/\s//g' file 但我认为没有什么能比得上tr
  • 它不会胜过tr,但Perl 也有比s// 快的tr。 perl -pe 'tr/ //d' file
猜你喜欢
  • 2016-05-05
  • 2021-02-18
  • 2013-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-28
  • 1970-01-01
相关资源
最近更新 更多