【问题标题】:Wrap string using `sed`使用`sed`包装字符串
【发布时间】:2020-04-20 18:40:43
【问题描述】:

我需要一个帮助来获得如下输出,

b=`'1,2,3,4,5,6' | <using sed>`

echo $b

b 的值我期望如下:

1,2
3,4
5,6

【问题讨论】:

  • 欢迎来到 Stack Overflow。 SO 是面向专业和热情的程序员的问答页面。将您自己的代码添加到您的问题中。您应该至少展示自己为解决这个问题所做的研究。
  • 尝试做你的功课,然后发布你的代码。
  • b="$(echo '1,2,3,4,5,6' |grep -o '[0-9],[0-9]')" 将使用 grep 执行此操作,但这不是 sed,您还没有指定您对 1,2,3,4,5,6,7 的期望

标签: shell unix sed


【解决方案1】:
$ sed 's/\([^,]*,[^,]*\),/\1\n/g' <<< "1,2,3,4,5,6"
1,2
3,4
5,6

您还应该阅读 bash 常见问题解答中的 Why is $(...) preferred over `...` (backticks)?(即使您不使用 bash,它也适用)

【讨论】:

    【解决方案2】:

    下一个解决方案可能会失败:

    # Wrong:  
    echo "1,2,3,4,5,6" | grep -Eo "[^,]+,[^,]*"
    # Works here, but fails for "1,2,,4,5,6"
    

    也许更适合你的情况

    echo "1,2,3,4,5,6" | tr "," "\n" | paste -d"," - -
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-30
      • 2015-10-04
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 2021-03-01
      • 1970-01-01
      相关资源
      最近更新 更多