Sed 将每N行复制到新行
我有一个txt文件,我需要复制每四行的第一行,并打印到每四行的第三行。并将其打印到新的txt文件中。 e、 g 将其更改为:Sed 将每N行复制到新行,sed,awk,Sed,Awk,我有一个txt文件,我需要复制每四行的第一行,并打印到每四行的第三行。并将其打印到新的txt文件中。 e、 g 将其更改为: @CR5SM:00004:00029 TTTTCTCTTTCTTTCTT +CR5SM:00004:00029 >>>/>@99419BAAABB @CR5SM:00005:00026 ATTATAGAGGGATAG +CR5SM:00005:00026 ;969999999-4;BB 我尝试过使用Awk,但似乎找不到正确的命令来执行此操作。 有
@CR5SM:00004:00029
TTTTCTCTTTCTTTCTT
+CR5SM:00004:00029
>>>/>@99419BAAABB
@CR5SM:00005:00026
ATTATAGAGGGATAG
+CR5SM:00005:00026
;969999999-4;BB
我尝试过使用Awk,但似乎找不到正确的命令来执行此操作。
有人有什么解决办法吗?感谢使用awk
awk:
$ awk '/^@/{a=substr($0,2)}/^\+/{$0=$0 a}1' file
@CR5SM:00004:00029
TTTTCTCTTTCTTTCTT
+CR5SM:00004:00029
>>>/>@99419BAAABB
@CR5SM:00005:00026
ATTATAGAGGGATAG
+CR5SM:00005:00026
;969999999-4;BB
您可以通过以下方式将输出重定向到另一个文件:
awk '/^@/{a=substr($0,2)}/^\+/{$0=$0 a}1' file > newfile
- 我们使用
substr
函数捕获从第二个字符开始到行尾以@
开头的行李>
- 我们查找以
+
开头的行(注意,因为它是元字符,所以我们将其转义)。找到该行后,我们将捕获的行附加到现有行李>
- 最后的
1
允许我们打印行李>
使用
awk
:
$ awk '/^@/{a=substr($0,2)}/^\+/{$0=$0 a}1' file
@CR5SM:00004:00029
TTTTCTCTTTCTTTCTT
+CR5SM:00004:00029
>>>/>@99419BAAABB
@CR5SM:00005:00026
ATTATAGAGGGATAG
+CR5SM:00005:00026
;969999999-4;BB
您可以通过以下方式将输出重定向到另一个文件:
awk '/^@/{a=substr($0,2)}/^\+/{$0=$0 a}1' file > newfile
- 我们使用
substr
函数捕获从第二个字符开始到行尾以@
开头的行李>
- 我们查找以
+
开头的行(注意,因为它是元字符,所以我们将其转义)。找到该行后,我们将捕获的行附加到现有行李>
- 最后的
1
允许我们打印行李>
试试:
awk '
(NR-1) % 4 == 0 { l=substr($0,2); print; next } # save every 4th line (print & continue)
(NR-1) % 4 == 2 { print $0 l; next } # append saved line to every 3rd line (print & continue)
{ print }' \ # all other lines: print as is
infile > outfile # specify input file and redirect output to output file
尝试:
这可能适用于您(GNU-sed):
复制第一行,打印第一行和第二行,并将第一行附加到第三行,删除第一行的第一个字符,打印第一行和第四行,然后重复。这可能适用于您(GNU-sed):
复制第一行,打印第一行和第二行,并将第一行附加到第三行,删除第一行的第一个字符,打印第二行和第四行,然后重复。优雅,但它依赖于行的内容而不是它们的索引。@mklement0正确,但这似乎是某种生物医学fasta输出,对内容的依赖可能会得到回报,特别是当一些蛋白质序列重叠到多行时。不过只是猜测而已<代码>:)
听起来不错-只是想指出它;可能值得在您的答案中说明。@mklement0可能不是必需的。这些是fasta文件,具有相当特定的输出。很优雅,但它依赖于行的内容而不是它们的索引。@mklement0正确,但这似乎是某种生物医学fasta输出,对内容的依赖可能会得到回报,特别是当某些蛋白质序列重叠到多行时。不过只是猜测而已<代码>:)听起来不错-只是想指出它;可能值得在您的答案中说明。@mklement0可能不是必需的。这些是具有相当特定输出的fasta文件。