目に見えない改行文字の多いファイルがあります。 Vimでは$
(で見ることができます)として表示されます:set list
。\n
invincibleの代わりにリテラル文字列を含む文字列行で表される出力に変換するのに問題があります$
。
例:
# cat file.txt
test
file
with
newlines
vimで改行を表示するには、「set list」と入力します。
このコマンドを使用すると、必要に応じて出力形式を指定できます。
# awk '{printf "%s\\n", $0}' file.txt
test\nfile\nwith\nnewlines\n
しかし、もっと簡単な方法があるべきだと思いますsed
。echo
printf
答え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' '\\'