>
次の行で始まる重複行を削除したいと思います。
たとえば、
>1
ACCGGTTTCCTTGAAATT
>2
AACCTTCCGGTTAATT
>3
AACCTTCCGGTTAATT
>1
ACCGGTTTCCTTGAAATT
ご覧のとおり、次の2行が重複しています。
AACCTTCCGGTTAATT and >1
しかし、次の行だけを削除したい>1
ので、出力は次のようになります。
>1
ACCGGTTTCCTTGAAATT
>2
AACCTTCCGGTTAATT
>3
AACCTTCCGGTTAATT
私が次のようなものを使用している場合:
awk '!seen[$0]++' filename
出力は次のとおりです
>1
ACCGGTTTCCTTGAAATT
>2
AACCTTCCGGTTAATT
>3
>
すべての重複行を削除し、その後の次の行から始まる重複行のみを削除したいからです。
私の実際のファイルは約数千行なので、>
シンボルの後に複数の繰り返し可能な名前があるかもしれません。
どんな提案がありますか?
ベストアンサー1
getline
次の行を取得するには、awkで使用できます。
awk '/^>/{ if(!seen[$0]++){ print;getline;print } else { getline } }'
複数行を処理するより簡単な答えがあります。
awk '/^>/{ skip = seen[$0]++ }
{ if(!skip)print }'