输出文件并将文件中的隐式换行符 ($) 更改为文字 (\n) 的简单方法

输出文件并将文件中的隐式换行符 ($) 更改为文字 (\n) 的简单方法

我有一个文件,里面有许多不可见的换行符。在 Vim 中,它显示为$(可以使用 来查看:set list)。我很难将它们转换为输出,该输出表示为一行字符串,其中包含文字\n字符串,而不是无敌的$

例子:

# cat file.txt 
test
file
with
newlines

要在 vim 中查看换行符,请输入 :set list。

使用此命令,我可以根据需要格式化输出:

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

但是,我认为应该有一种更简单的方法sedecho或者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

也就是说,将当前行追加到保留空间(如果是第一行,则覆盖保留空间)。如果我们在最后一行,则使用 获取保留空间g,然后将每个文字换行符替换为并在最后\n插入,然后通过到达脚本末尾隐式打印缓冲区。\n如果我们不在最后一行,则跳到下一个循环,而不隐式打印当前缓冲区。

在命令行上:

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

这将输出输入的所有行,并以两个字符\n作为分隔符连接在一起。输出末尾将有一个换行符。

答案4

perl:

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

如果你想直观地看到LF最后的角色。


\n否则,如果您想在不看到控制台上的输出(字符)的情况下切断它,请使用简单的transliteration

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

相关内容