【问题标题】:replacing multiple spaces with comma in unix在unix中用逗号替换多个空格
【发布时间】:2015-06-23 23:41:29
【问题描述】:

我有一个包含以下数据的文件:

1               abcd               hello world               5000

(注意:每个单词之间有 15 个空格,“hello world”是一个条目,中间有一个空格)

我必须用一个逗号 (,) 替换 15 个空格。 "hello" 和 "world" 之间的单个空格应保持原样。

我尝试了 sed 和 tr 命令的各种组合,但没有任何效果。

【问题讨论】:

标签: bash unix sed tr


【解决方案1】:

这是sed的工作:

$ sed -r 's/ {15}/,/g' file
1,abcd,hello world,5000

或者,没有允许扩展正则表达式的 -r 标志:

$ sed 's/ \{15\}/,/g' file
1,abcd,hello world,5000

这表示:获取 15 个空格并用逗号替换它们。少量的空格不会被替换。

【讨论】:

    【解决方案2】:

    只是一个改进,因为您已经有了正确的答案:

    这将用','替换至少2个连续空格的任何序列

    sed -r 's/ {2,}/,/g' file
    1,abcd,hello world,5000
    

    这将允许“hello world”或任何其他使用单个空格作为分隔符的字符串,并且还省去了您必须确保恰好有 15 个空格的麻烦。

    【讨论】:

      猜你喜欢
      • 2014-05-31
      • 1970-01-01
      • 1970-01-01
      • 2015-01-13
      • 2017-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多