【问题标题】:Sed to add new line while replacing commaSed 在替换逗号时添加新行
【发布时间】:2022-10-23 20:57:22
【问题描述】:

我有一个如下列表: 发布=abc、xyz、pqr、bnm 作为输出我需要

abc
xyz
pqr
bnm

我在下面尝试使用 sed ,它成功删除,但无法在逗号后插入新行,如果可以帮助请

release=abc,xyz,pqr,bnm
for i in $release;do
    b=`echo $i| sed 's/,/\\n/g'`
    echo $b
done

输出: abc xyz pqr bnm 在这里不需要换行

【问题讨论】:

    标签: bash sed


    【解决方案1】:

    使用Parameter Expansion

    release=abc,xyz,pqr,bnm
    
    echo "${release//,/$'
    '}"
    

    输出

    abc
    xyz
    pqr
    bnm
    

    使用您的方法使用sed

    release=abc,xyz,pqr,bnm
    
    echo "$release" | sed 's/,/
    /g'
    

    【讨论】:

    • 谢谢,但是每当我在变量中传递它时,它都会再次更改,所以release=abc,xyz,pqr,bnm for i in $release;do echo "$i"|sed 's/,/ /g' done 没问题,但是 ``` release=abc,xyz,pqr,bnm for i in $release;do name=echo "$i"|sed 's/,/ /g' echo $name done` `是给错了,如果可以建议
    • 你不需要循环,只需要上面的代码。
    • 谢谢,没问题..但我的要求是在 for 循环中根据 release=abc,xyz,pqr,bnm 值运行它,所以正在寻找
    • 你能编辑你的问题吗,还有一个while循环呢?是否被接受?还是只是一个 for 循环?
    【解决方案2】:

    不需要循环,因为循环中的iabc,xyz,pqr,bnm

    您也可以将换行符翻译成逗号:

    release=abc,xyz,pqr,bnm
    tr , '
    ' <<< $release
    

    输出

    abc
    xyz
    pqr
    bnm
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-29
      • 2012-05-31
      • 2014-06-25
      • 2020-02-20
      • 2013-08-05
      • 2018-09-20
      • 1970-01-01
      • 2022-12-22
      相关资源
      最近更新 更多