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