我需要将一系列使用换行符格式化的文本文件转换为由换行符分隔的单行(\ n)。例如:
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 :(得分:2)
请尝试此解决方案:
awk 'BEGIN{RS="\n";ORS="\\n"}1' file.txt
我们正在做的是检测记录分隔符,如'\ n',当我们打印时我们使用'\ n',双斜线意味着它必须打印'\ n',强制打印我们使用模式1使用默认操作(打印整个记录)。
如果您有任何问题请告诉我,我没有可用的awk。
答案 1 :(得分:1)
当您说“换行符”时,如果您的意思是“回车”,“换行”或“换行”或其他内容,并且您是否想要用字符串\n
替换换行符或者如果您只是想从换行符或其他东西中删除Carriage Returns,但如果是后者,则只需要:
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
您无法使用tr
进行强有力的操作,因为它无法判断\r
何时位于某一行的末尾,并且您无法使用{sed
进行移植1}}。
答案 2 :(得分:0)
这可能适合你(GNU sed):
sed '1h;1!H;$!d;x;s/\n/\\n/g' file
将文件粘贴到内存中并引用换行符。