-3

次の形式のテキスト ファイルがあるとします。

@ATDGGSGDTSG
NTCCCCC
+
@nddhdhnadn
@ATDGGSGDTSG
NTCCCCC
+
nddhdhnadn

これで「4」行の繰り返しパターンになり、毎回2行目、つまり「@」で始まる行の次の行、つまり2行目..6行目..などだけを印刷したいと思います。

どうすればいいですか?

4

5 に答える 5

2
perl -ne 'print if $b and !/^@/; $b=/^@/' file
于 2013-10-21T09:25:44.317 に答える
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
于 2013-10-21T09:24:00.980 に答える
0
awk '/^\@/{getline;print}' your_file
于 2013-10-21T09:31:13.840 に答える
0

次のような変数を使用$printNextLineして、すべての入力をループし1、 @ のある行が表示されるたびに に設定し、現在の行を印刷しながら、変数が0である場合は に戻すことができ1ます。

他の回答ほど効果的で短くはありませんが、perl を初めて使用する人にとってはより直感的かもしれません。

于 2013-10-21T09:34:54.927 に答える
0
awk '/^\@/{getline;print}' file
于 2013-10-21T09:36:19.253 に答える