【问题标题】:how to use new line for BSD sed substitution [duplicate]如何使用新行进行 BSD sed 替换 [重复]
【发布时间】:2019-05-28 09:46:39
【问题描述】:

我有一个sed命令如下:

sed -i 's/),(/),\n(/g' myfile

我的文件是这样的:

(237),(238)

预期结果是:

(237),
(238)

实际结果是:

(237),n(238)

我尝试了很多写新行的方法,但都失败了。是否有可能得到预期的结果?

我发现GNU sed 有效,但BSD sed 无效。

【问题讨论】:

    标签: sed newline


    【解决方案1】:

    对于BSD sed,我们可以将新行写成$'\n',所以命令应该是:

    /usr/bin/sed 's/),(/),\'$'\n''(/g' myfile
    

    【讨论】:

      【解决方案2】:

      这可能对你有用:

      sed -e 'G' -e 's/,\(.*\)\(.\)/,\2\1/' file
      

      G 命令会将保持空间附加到模式空间,这实际上将在保持空间为空时附加一个换行符。模式匹配可以将其重新排列为所需的结果。

      【讨论】:

        猜你喜欢
        • 2010-11-28
        • 2021-10-21
        • 2014-08-08
        • 2010-11-29
        • 2013-10-04
        • 1970-01-01
        • 2011-10-04
        • 1970-01-01
        相关资源
        最近更新 更多