2016-06-28 52 views
1

我需要将一系列用换行符格式化的文本文件转换为由换行符(\ n)分隔的单个行。例如:Bash连接并用换行符替换回车

This is an example text file 
where the contents are separated 
by line breaks 

我想这是什么样子是:

This is an example text file\nwhere the contents are separated\nby line breaks\n 

我愿意用awk,sed或任何内置的POSIX命令。

+0

你的意思是'tr'\ r''\ n'<文件' – anubhava

+0

糟糕,你忘了发布你的代码! StackOverflow是关于帮助人们修复他们的代码。这不是免费的编码服务。任何代码都比没有代码更好。即使你不知道如何编写它,甚至元代码也会演示你如何看待程序应该起作用。 – ghoti

回答

2

请尝试此解决方案:

awk 'BEGIN{RS="\n";ORS="\\n"}1' file.txt 

我们正在做的是检测记录分隔符如“\ n”,当我们打印时,使用“\ n”,双斜杠意味着它必须打印“ \ n',用默认动作强制打印我们使用模式1(打印整个记录)。

如果您有任何问题,请告诉我,我没有可用的awk来尝试它。

1

如果您的意思是“回车”,“换行”或换行符或其他内容,您说“换行符”还不清楚,也不清楚您是否想用字符串\n替换换行符,或者只是想要带笔架换行还是别的什么回报,但如果其后者,那么所有你需要的是:

dos2unix file 

如果你没有DOS2UNIX的,你可以用任何awk完成这件事:

$ printf 'foo\r\nbar\r\n' | cat -v 
foo^M 
bar^M 

$ printf 'foo\r\nbar\r\n' | awk '{sub(/\r$/,"")}1' | cat -v 
foo 
bar 

你因为它是ca,所以不能用tr来强有力地完成它不知道\r何时在某行的末尾,而且不能用sed进行移植。

0

这可能为你工作(GNU SED):

sed '1h;1!H;$!d;x;s/\n/\\n/g' file 

啜食文件到内存中,并引用新行。