假设我有一个格式如下的文本文件
@ATDGGSGDTSG
NTCCCCC
+
@nddhdhnadn
@ATDGGSGDTSG
NTCCCCC
+
nddhdhnadn
现在它是“4”行的重复模式,我每次都只想打印第二行,即以“@”开头的行之后的行,即第 2 行..6 行..等等。
我该怎么做?
perl -ne 'print if $b and !/^@/; $b=/^@/' file
与awk
:
$ awk 'NR%4==2' a
NTCCCCC
NTCCCCC
NR
代表数字或记录,在这种情况下是行数。然后,如果我们将它除以 4,我们得到所有模数为 2 的线。
如果我希望输出为 >“nextline”NTCCCCCC >“nextline”NTCCCCCC 即我想在重定向输出时在该行之前添加“>”。
这样,例如:
$ awk 'NR%4==2 {print ">"; print $0}' a
>
NTCCCCC
>
NTCCCCC
另一个例子:
$ seq 30 | awk 'NR%4==2'
2
6
10
14
18
22
26
30
awk '/^\@/{getline;print}' file
awk '/^\@/{getline;print}' your_file
您可以有一个变量,$printNextLine
并循环遍历所有输入,将其设置为1
每当您看到带有 @ 的行并打印当前行,同时将变量设置回0
if it is 1
。
不像其他答案那样有效和简短,但对于 perl 新手来说可能更直观。