【发布时间】:2016-06-10 06:05:50
【问题描述】:
我找到了类似问题的解决方案,但并不完全符合我的要求。 基本上,如果第一行以给定的模式开头,我想将两行合并为一个。 从此
One
PATTERN bla bla bla
Three
Four
到这里
One
PATTERN bla bla bla Three
Four
这种“awk”解决方案不起作用。 Removing new line after a particular text via bash/awk/sed/perl:它将两行打印为一个,但第二行在开头并部分覆盖了第一行。
编辑:所有这些解决方案都有相同的结果。为了更清楚,我会放原文。 原线
LOCUS NODE_10_length_218773_cov_81.1626_ID_>218773 bp DNA linear
BCT09-MAY-2016
sed 和 awk 处理都返回
BCT09-MAY-2016E_10_length_218773_cov_81.1626_ID_>218773 bp DNA linear
但是如果我将标准输出重定向到一个文件,我们似乎就快到了
LOCUS NODE_10_length_218773_cov_81.1626_ID_>218773 bp DNA linear^M BCT09
但是 ^M 是从哪里来的呢?
【问题讨论】:
-
这些解决方案不起作用在这里没有多大用处。但是向我们展示您如何修改这些解决方案以适应您的问题是很有用的。
-
我怀疑你的源文件是在 Windows 上生成的,其中行尾包含在 CR+LF 中,而在 Linux 上这只是 LF。解决方案是无条件删除
\rchars。 -
你说得对,我之前没有遇到过这个问题。删除 \r 后一切正常,因此它可能算作重复问题