【问题标题】:Remove all whitespaces in a file- Linux删除文件中的所有空格 - Linux
【发布时间】:2011-05-05 19:21:52
【问题描述】:

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

【问题讨论】:

  • 在文件本身还是在文件名中?

标签: regex linux bash sed


【解决方案1】:

如果您有 UTF-8 数据,最好这样做:

perl -CS -pe 's/\p{Space}//g' < input > output

【讨论】:

    【解决方案2】:

    根据您对空白的定义,类似:

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

    会成功的。

    【讨论】:

    • +1 tr 比 sed “便宜”,避免调用两个程序
    • GNU tr 有 [:space:] 类,用于“所有水平或垂直空白”(我假设“或”应该是“和”)。所以tr -d '[:space:]' 也应该能做到这一点。
    • 还有\v(垂直标签,也包含在[:space:]中)。
    • 我不认为tr 在 UTF-8 数据上正常工作,甚至在 ISO-8859-1 上也不能正常工作,而只是在 ASCII 上工作。
    • @tchrist:某些版本的 tr 将处理其他字符集。在非 ASCII 情况下,可能建议使用 [:space:]。
    【解决方案3】:
    sed 's/\s//g' input.txt | tr -d '\n'
    

    【讨论】:

    • 您能否解释一下为什么's/\s//g' 中的\s 表示空格?谢谢。
    【解决方案4】:
    sed 's/\s//g'|tr -d '\n'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-19
      • 1970-01-01
      • 2011-10-01
      • 2016-03-29
      • 1970-01-01
      • 2013-02-27
      • 2015-01-28
      相关资源
      最近更新 更多