sed mac二重引用符を使用して特定の行にテキストを追加する

sed mac二重引用符を使用して特定の行にテキストを追加する

私はこれをOSXのファイルに1行追加するためにsedを使用するスタートアップガイドとして使用しようとしています。 https://stackoverflow.com/questions/25631989/sed-insert-line-command-osx

sed -i '.json' '2i\
this is a test place
    ' dummy.txt

上記は有効です。しかし、拡張する必要があるので、簡単なものから始めて二重引用符に置き換えてください。

sed -i '.json' "2i\
this is a test place
    " dummy.txt

私はなぜそのような言葉を聞きますかcommand i expects \ followed by text?または、Macで二重引用符を使用して特定の行にテキストを追加する方法は?

ベストアンサー1

$ sed "2i\\
These are words on\\
multiple lines\\
" input
1
These are words on
multiple lines
2
3
4
5
6
7
8
9
10

シェルの代わりにsedエスケープするリテラル改行を解析してエスケープするようにバックスラッシュをエスケープする必要があります。sed

$ sed '2i\
thing' input

二重引用符を使用すると、すべての内容が文字通り渡されるため、sed次を参照してください。<2> <i> <literal linefeed>

$ sed "2i\
thing" input

弱い引用符を使用すると、文字列を解析するときにシェルが最初に権限を取得します。したがって、sed見てわかるように<2> <i> <linefeed>、これは構文エラーです。

おすすめ記事