sedを使用して改行( n)を挿入します



Insert Newline Using Sed



解決:

NSBSDのsedはをサポートしていません n改行の表現(それをリテラルに変換するNS):

$エコー「123」。 | sed -E's /([[:digit:]] *) ./  1  n次の行/ '123n次の行

GNUsedはサポートします n表現:



$エコー「123」。 | gsed -E's /([[:digit:]] *) ./  1  n次の行/ '123次の行

代替手段は次のとおりです。

次に使用する単一文字の区切り文字を使用しますtrは新しい行に変換されます:



$エコー「123」。 | sed -E's /([[:digit:]] *) ./  1 |次の行/ '| tr '|' ' n'123次の行

または、sedスクリプトでエスケープされたリテラルの改行を使用します。

$エコー「123」。 | sed -E's /([[:digit:]] *) ./  1  next line / '123 next line

または、新しい行を定義します。

POSIX:



nl = ''

BASH / zsh / ANSI C引用をサポートするその他:

nl = $ ' n'

そして、適切な引用符でsedし、リテラルを挿入するためにエスケープしますNS:

エコー「123」。 | sed's /./''\${nl} ''次の行/ '123次の行

または使用するawk:

$エコー「123」。 | awk '/ ^ [[:digit:]] +  ./ {sub(/  ./、'  n次の行 ')} 1'123次の行

または、サポートするGNUsedを使用しますNS


sedで改行を取得するための移植可能な方法は、バックスラッシュとそれに続く文字通りの改行です。

$ echo'foo '| sed's / foo / foo  bar / 'foo bar

ただし、sedではなくawkを使用することで、問題全体に対してはるかに簡単な解決策があることを保証します。