【问题标题】:Bash: replace specific newline with spaceBash:用空格替换特定的换行符
【发布时间】:2017-10-05 16:13:58
【问题描述】:

我有许多扩展名为 .awesome 的文件,其中包含如下行:

something =
[51,42,12]

其中 something =* 在所有文件中以及 **[ (数字各不相同。)

我想摆脱换行符,但不知道如何。我遇到了 tr,但担心它会替换所有换行符。我的文件包含多个我想保留的换行符(仅更改此换行符。)过去我已经能够成功地使用 sed 查找和替换,但特别是使用特殊字符(\n 和 =。)另外,我读到 sed 是一行一行的,不能处理这样的事情。

任何指导将不胜感激。

【问题讨论】:

    标签: bash


    【解决方案1】:

    GNU sed 解决方案:

    示例test.awesome 文件内容:

    some text
    another text
    something =
    [51,42,12]
    
    text
    text
    

    工作:

    sed '/something =/{N; s/\n/ /;}' test.awesome
    

    输出:

    some text
    another text
    something = [51,42,12]
    
    text
    text
    

    【讨论】:

    • 它说,“sed: 1:”/something =/{N; s/\n/ /}": 替换命令中的错误标志:'}'" 这似乎是 Mac 用户的问题。
    • @MelanieShebel,在子命令sed '/something =/{N; s/\n/ /;}' test.awesome之后添加分号
    猜你喜欢
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多