ファイルを出力し、ファイルの暗黙的な改行($)をリテラル(\ n)に変更する簡単な方法

ファイルを出力し、ファイルの暗黙的な改行($)をリテラル(\ n)に変更する簡単な方法

目に見えない改行文字の多いファイルがあります。 Vimでは$(で見ることができます)として表示されます:set list\ninvincibleの代わりにリテラル文字列を含む文字列行で表される出力に変換するのに問題があります$

例:

# cat file.txt 
test
file
with
newlines

vimで改行を表示するには、「set list」と入力します。

このコマンドを使用すると、必要に応じて出力形式を指定できます。

# awk '{printf "%s\\n", $0}' file.txt 
test\nfile\nwith\nnewlines\n

しかし、もっと簡単な方法があるべきだと思いますsedechoprintf

答え1

sed答えのGNUバージョンを使用してください。

sed -z 's/\n/\\n/g' file.txt

ファイルの内容が改行に分割されないようにするには、zこのオプションを使用します。sed

次のように答えてくださいecho

xargs -I {} echo -n '{}\n' < file.txt

によってxargs各ファイルラインの出力が追加されますecho\n

答え2

どうですか?

awk -v ORS='\\n' 1 infile

またはもう少しコンパクトなもの:

awk 1 ORS='\\n' infile

答え3

使用標準sed:

H
1h
$ {
    g
    s/\n/\\n/g
    s/$/\\n/
}
$! d

つまり、現在の行を次に追加します。スペアスペース(最初の行の場合は予約済みスペースを上書きします。)最後の行にある場合、useは予約済みスペースを取得し、g各リテラル改行文字をに置き換えて最後に\n挿入し、スクリプトの最後に到達して暗黙的にバッファを印刷します。\n最後の行にない場合は、現在のバッファを暗黙的に印刷せずに次のループにジャンプします。

コマンドラインから:

sed -e H -e 1h -e '${ g; s/\n/\\n/g; s/$/\\n/; }' -e '$!d' file

これにより、入力のすべての行が区切り\n文字で2文字に連結されて出力されます。出力の末尾に改行文字があります。

答え4

perl:

perl -00pe 's/\n/\\n/g' file

LF最終キャラクターを視覚的に見たいなら。


\nコンソールに表示されずに出力(文字)を切り取るには、simpleを使用しますtransliteration

cat file | tr '\n' '\\'

関連情報