Bash 将字符\n替换为文本上的实际换行符
所以,我有一个文本文件,看起来像:Bash 将字符\n替换为文本上的实际换行符,bash,unix,sed,Bash,Unix,Sed,所以,我有一个文本文件,看起来像: this text \n and more text. 我试图用真正的换行符替换字符,\n为此,我尝试了如下操作: sed 's/\n/\n/g' inputfile 关于如何使用sed来实现这一点,有什么想法吗?谢谢。您必须在搜索模式中避开反斜杠 sed 's/\\n/\n/g' inputfile 使用awk: awk '{gsub(/\\n/, "\n")} 1' file 请注意,awk解决方案与POSIX awk以及gnu awk一起工作 以
this text \n and more text.
我试图用真正的换行符替换字符,\n为此,我尝试了如下操作:
sed 's/\n/\n/g' inputfile
关于如何使用sed来实现这一点,有什么想法吗?谢谢。您必须在搜索模式中避开反斜杠
sed 's/\\n/\n/g' inputfile
使用
awk
:
awk '{gsub(/\\n/, "\n")} 1' file
请注意,awk解决方案与POSIX awk以及gnu awk一起工作
以下是POSIX sed解决方案:
sed 's/\\n/\
/g' file
Bodo的答案适用于Linux(使用GNU
sed
)。但是在使用BSDsed
的系统上,例如MacOS,替换字符串中的\n
不会替换为换行符,因此需要在替换字符串中添加文字换行符。它需要转义,否则会出现错误“替换模式内的未转义换行符”
$“…”
告诉bash
替换字符串中的C样式转义序列。因此,您需要将所有反斜杠加倍,才能将它们逐字放入字符串中。在这里,您发现此sed
可以工作,但需要bash
并且可能无法处理类似dash
的内容。我建议使用与POSIX兼容的sed
命令,该命令将在OSX bash、dash、ksh和zsh上运行
sed $'s/\\\\n/\\\n/g'