【问题标题】:delete n number of spaces from a line从一行中删除 n 个空格
【发布时间】:2013-10-02 05:29:05
【问题描述】:

我正在尝试删除两个单词之间的 n 个空格,我想知道这是否可能。我在网上搜索但找不到任何东西。我只找到如何删除制表符和空白行。我把问题3个空格改成1个后,请在input.txt中把它当成3个。

“aaaa”和“bbb”之间有3个空格字符,我只想删除两个空格。

$ cat Input.txt
aaaa   bbb   ccc ddd
eeee ff   ggg hhh

期望的输出:

aaaa bbb ccc ddd
eee ff ggg hhh

【问题讨论】:

    标签: unix sed awk grep tr


    【解决方案1】:

    Fedorqui 的解决方案是最好的方法,但sed 的方法如下:

    % sed 's/  */ /g' file
    aaaa bbb ccc ddd
    eeee ff ggg hhh
    

    【讨论】:

      【解决方案2】:

      试试这些行,它可能会有所帮助:

      tr -s ' ' 
      

      sed 's/ \+/ /g' file
      

      awk '$1=$1' file
      

      【讨论】:

      • awk '$1=$1' 这很危险,如果第一个字段是 00.0 它将失败。最好使用awk '{$1=$1}1'
      【解决方案3】:

      tr-s 选项来压缩重复字符:

      $ tr -s ' ' < file
      aaaa bbb ccc ddd
      eeee ff ggg hhh
      

      -s, --squeeze-repeats

      替换列表中列出的重复字符的每个输入序列 SET1 只出现一次该字符

      另一个例子:

      $ echo "aaa ----- bbbb ------------- ccc" | tr -s '-'
      aaa - bbbb - ccc
      

      【讨论】:

        猜你喜欢
        • 2020-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-24
        • 1970-01-01
        • 2021-09-17
        • 2022-11-22
        • 1970-01-01
        相关资源
        最近更新 更多