【问题标题】:AWK:: How to remove the "space" characters thats exists after each word using awkAWK:: 如何使用 awk 删除每个单词后存在的“空格”字符
【发布时间】:2014-12-08 11:31:10
【问题描述】:

我的示例文本:

请将以下 7 行复制粘贴到记事本中。这样你就可以看到每个单词后面都有空格。 (请注意:空格数不是固定的,有的地方有16个空格,也没有空格)

Gadu-Gadu                
Gadu-Gadu_file-transfer  
Gadu-Gadu_server
Gadu-Gadu_video          
Gadu-Gadu_voice          
GameKit
Generic\ Voice 

例如我在“Gadu-Gadu 和 Gadu-Gadu_file-transfer”之间有 16 个空格。

我想删除空格,然后我想输出为:

Gadu-Gadu
Gadu-Gadu_file-transfer
Gadu-Gadu_server
Gadu-Gadu_video
Gadu-Gadu_voice
GameKit
Generic\ Voice

注意:“通用\语音”之间有一个空格。这不应该被脚本删除。我只想删除每个单词末尾存在的空格。

请建议我使用任何 awk 或其他编程脚本来实现这一目标。

谢谢,

库马尔

【问题讨论】:

  • 您要删除所有尾随空格吗?如果是,那么这个sed 's/ \+$//' file 就可以完成这项工作。

标签: regex awk sed


【解决方案1】:

通过awk,它可以更短。

awk '$1=$1' file

【讨论】:

    【解决方案2】:

    你可以简单地通过 sed 来做到这一点,

    $ sed '/^.\{25\}$/s/ \+$//' file
    Gadu-Gadu
    Gadu-Gadu_file-transfer
    Gadu-Gadu_server
    Gadu-Gadu_video
    Gadu-Gadu_voice
    GameKit
    Generic\ Voice 
    

    上述命令将删除所有最后仅在恰好有 25 个字符的行上的空格。

    删除末尾的所有空格,无论该特定行上没有字符。

    sed 's/ \+$//' file
    

    添加内联编辑参数-i 以保存所做的更改。

    sed -i 's/ \+$//' file
    

    【讨论】:

      【解决方案3】:

      使用awk,应该这样做:

      awk '{$1=$1}1' file
      Gadu-Gadu
      Gadu-Gadu_file-transfer
      Gadu-Gadu_server
      Gadu-Gadu_video
      Gadu-Gadu_voice
      GameKit
      Generic\ Voice
      

      或者只是删除尾随空格:

      awk '{sub(/ +$/,"")}1' file
      

      【讨论】:

        【解决方案4】:
        sed -r 's/[ \s\t]+$//g' File
        

        用任何内容替换每行中的尾随空格或制表符。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-09-29
          • 2013-07-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多