Как добавить новую строку, используя sed на MacOS?

Я хотел добавить новую строку между </a> and <a><a>

</a><a><a>

</a>
<a><a>

Я сделал это

sed 's#</a><a><a>#</a>\n<a><a>#g' filename но это не сработало.

Ответ 1

Некоторые sed, особенно 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/'

Ответ 2

Работает на mac в двух интерпретациях:

  • echo foo | sed 's/f/f\'$'\n/'
  • echo foo | gsed 's/f/f\n/g'

Ответ 3

... или просто стучите по нему! работал для меня на вставке на Mac/OSX:

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