\nの複数のインスタンスを含むファイルがあります。
それらを実際の改行に置き換えたいのですが、sed は\nを認識しません。
私は試した
sed -r -e 's/\n/\n/'
sed -r -e 's/\\n/\n/'
sed -r -e 's/[\n]/\n/'
およびそれを回避する他の多くの方法。
sed はリテラル\nを認識できますか? もしそうなら、どのように?
\nを実際の改行として解釈するファイルを読み取ることができる別のプログラムはありますか?
\nの複数のインスタンスを含むファイルがあります。
それらを実際の改行に置き換えたいのですが、sed は\nを認識しません。
私は試した
sed -r -e 's/\n/\n/'
sed -r -e 's/\\n/\n/'
sed -r -e 's/[\n]/\n/'
およびそれを回避する他の多くの方法。
sed はリテラル\nを認識できますか? もしそうなら、どのように?
\nを実際の改行として解釈するファイルを読み取ることができる別のプログラムはありますか?
これを試してもらえますか
sed -i 's/\\n/\n/g' input_filename
awk
これをうまく処理しているようです:
echo "test \n more data" | awk '{sub(/\\n/,"**")}1'
test ** more data
\
ここでは、 usingをエスケープする必要があります\\
$ echo "\n" | sed -e 's/[\\][n]/hello/'
sed
一度に 1 行ずつ動作するため、 1 行だけでは機能しません (読み取り時にバッファーに\n
削除されます)。、またはをsed
使用して、バッファーを複数行で埋めてから、内部に表示する必要があります。注意してください、これは行末ではなく、文字列/バッファの終わりです。N
n
H
h
\n
^
$
\n
\n
置換パターンではなく、検索パターンで認識されます。それを使用するための2つの方法(サンプル):
sed s/\(\n\)bla/\1blabla\1/
sed s/\nbla/\
blabla\
/
1 つ目は、\n
既に内部を後方参照として使用します (置換パターンの短いコード)。2番目は実際の改行を使用します。だから基本的に
sed "N
$ s/\(\n\)/\1/g
"
動作します(ただし、少し役に立たない)。それs/\(\n\)\n/\1/g
はあなたが望むものにもっと似ていると思います。