【发布时间】:2012-01-20 02:37:44
【问题描述】:
我正在尝试对以下输入使用简单的 perl 单行:
@F7##########0/1
C4CTA6GCAAC56G67CTCA99C
+
b[[WZ56W]87X9HBB
@44FC6%%%%&&&&&&&1UP1
GTS4HY2IOMD3FCCA8DFLLLTG
+
]]^4YY23ZV\6`a8`^9^a
等等
我希望我的输出看起来像:
@F7##########0/1
C4CTA6GCAAC56G67CTCA99C
+F7##########0/1
b[[WZ56W]87X9HBB
@44FC6%%%%&&&&&&&1UP1
GTS4HY2IOMD3FCCA8DFLLLTG
+44FC6%%%%&&&&&&&1UP1
]]^4YY23ZV\6`a8`^9^a
等等
我想搜索以@ 开头的行,并将该行的其余部分存储(分组)在$1 中。然后我找到下一个出现的+ 并将$1 添加到该行的末尾。
我尝试过perl -pi -e "s%^@(.*)$\1\n(.*)$\2\n(\+)$\3\n%$1\n$2\n\+$1%mg" file.txt,但我似乎无法匹配^@(.*)$\1\n 之后的任何内容。
肯定有一个可行的单线来实现这一点。欢迎使用Awk 或Sed 或tr 单行,但必须对file.txt 进行内联更改,因为file.txt 很大并且不希望写入另一个文件。
【问题讨论】:
标签: regex perl sed awk multiline