【问题标题】:How to add new line using sed on MacOS?如何在 MacOS 上使用 sed 添加新行?
【发布时间】:2017-10-09 00:09:23
【问题描述】:

我想在</a> and <a><a>之间添加一个新行

</a><a><a>

</a>
<a><a>

我做了这个

sed 's#&lt;/a&gt;&lt;a&gt;&lt;a&gt;#&lt;/a&gt;\n&lt;a&gt;&lt;a&gt;#g' filename 但没用。

【问题讨论】:

  • 不是sed 's#&lt;/a&gt;&lt;a&gt;&lt;a&gt;#&lt;/a&gt;\n&lt;a&gt;&lt;a&gt;#g' filename
  • 感谢您的评论。我尝试了's'但仍然没有工作
  • “没有用”是什么意思?输出错误?错误信息?还有什么?
  • 将 \n 替换为 \x0D,归功于:stackoverflow.com/a/27909903/1682506

标签: sed


【解决方案1】:

Powered by mac的两种解读:

  1. echo foo | sed 's/f/f\'$'\n/'
  2. echo foo | gsed 's/f/f\n/g'

【讨论】:

  • 如何在 mac 上安装 gsed?
  • ELI5?请?我不明白为什么我们要在美元符号前转义单引号。
  • @becko 您可以使用 Homebrew 安装 gsedbrew install gsed
  • (1) 的工作方式,它连接 2 个字符串,第一个字符串的字面意思是“s/f/f\”,第二个字符串之前的美元符号将“\n”扩展为实际的 new-行字符。这样,sed 会收到以下字符串:s/f/f\↵/
  • 我被brew install gnu-sed搞定了。
【解决方案2】:

一些seds,尤其是Mac / BSD,不要将\n解释为换行符,您需要使用实际的换行符,前面有一个反斜杠:

$ echo foo | sed 's/f/f\n/'
fnoo
$ echo foo | sed 's/f/f\
> /'
f
oo
$ 

或者你可以使用:

echo foo | sed $'s/f/f\\\n/'

【讨论】:

    【解决方案3】:

    ...或者你只是猛击它!在 mac / osx 上为我工作:

      sed "2 i \\\n${TEXT}\n\n" -i ${FILE_PATH_NAME}
      sed "2 i \\\nSomeText\n\n" -i textfile.txt
    

    【讨论】:

    • 你能提供更多关于mac osx版本的信息吗?我有这个输出sed: 1: "2 i \\nSomeText\n\n": extra characters after \ at the end of i command
    猜你喜欢
    • 1970-01-01
    • 2019-01-21
    • 2016-04-21
    • 2012-08-15
    • 1970-01-01
    • 2012-04-30
    • 2019-06-27
    • 2018-05-02
    相关资源
    最近更新 更多