【问题标题】:sed inserting dash into stringsed 将破折号插入字符串
【发布时间】:2011-08-02 16:01:28
【问题描述】:

我有包含数字的 14 个字符的行。如何在特定位置(即第 4 位)将字符插入其中?所以,如果我有这样的字符串: xxxxxxxxxxxxxx 我如何将其更改为这样的内容: xxxx-xx-xxxxxxxx ? (x = 数字)

谢谢! 艾瑞克

【问题讨论】:

    标签: insert sed line character digit


    【解决方案1】:

    如果您的行包含您的数字,您可以将前四个字符分组:

    \(....\)
    

    以及另外一组中的以下两个:

    \(....\)\(..\)
    

    然后,您只需将其替换为对第一组 (\1) 的反向引用、破折号、对第二组 (\2) 的反向引用和另一个破折号:

    \1-\2-
    

    结果:

    $ echo 12345678900000 | sed 's/\(....\)\(..\)/\1-\2-/'
    1234-56-78900000
    

    【讨论】:

    • 这就像通过鼻孔呼吸一样简单.. 非常感谢..
    【解决方案2】:

    感谢 Brandizzi 的回答,它帮助我使用稍微不同的方法让我的人工作

    sed 's/^\(.\{4\}\)\(.\{2\}\)/\1-\2-/' 
    

    4 和 2 用于替换第 4 个字符,然后用破折号替换之后的第 2 个字符。

    所以 xxxxxxxx 变成了 xxxx-xx-xx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多