私はこのリファレンスを使用しています: sedヘルプ:リテラル "\ n"(改行ではありません)のマッチングと置換
そして、文字列hello\ngoodbyeを含むファイル「test1.txt」があります。
このコマンドを使用して、「\ n」を検索し、実際の改行文字で置き換えます。
sed -i '' 's/\\n/\n/g' test1.txt
しかし結果は:hellongoodbyeです。 「\ n」を「n」に置き換えるだけで、実際の改行ではありません。これは、タブではなく「t」を残す/ tと同じです。
''はMACの未定義のエラーです: http://mpdaugherty.wordpress.com/2010/05/27/difference-with-sed-in-place-editing-on-mac-os-x -vs-linux /
更新:
私は@ hek2mglが提案した両方のコマンドを試しました:
sed -i 's/\\n/\n/g' test.txt
# Or:
sed -i'' 's/\\n/\n/g' test.txt
Linuxでは動作する可能性がありますが、MAC OSでは次のエラーが発生しました。
sed: 1: "test1.txt": undefined label 'est1.txt'
これが機能しない理由がわかりません。前もって感謝します。
これは少し奇妙に見えるかもしれませんが、以下を試してください。
sed -i '' 's/\\n/\
/g' test1.txt
つまり、\n
の代わりにactual改行を使用します。
説明はあなたが奇妙なsed
を持っているということです!詳細については、mac sedマニュアルを参照してください。 https://developer.Apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/sed.1.html
そこのs
コマンドの説明には、次のように書かれています。
A line can be split by substituting a newline character into it. To specify
a newline character in the replacement string, precede it with a backslash.
また、-i
オプションの説明では、拡張子はオプションではなく、必要ない場合は空の引数を指定する必要があることを示しています。結局のところ、すべてが理にかなっています!