ファイルから部分行の一致を削除する方法は?

ファイルから部分行の一致を削除する方法は?

ファイルを繰り返しながら、2行を比較して同じ12文字で始まることを確認したいと思います。これにより、最初の行を削除してからすべての行を比較するまで、残りの行をファイルの次の行と比較したいと思います。

このファイルには、ディレクトリ内のソートされたファイルのリストが含まれています。同じ12文字で始まるファイルが複数ある場合があります(常に順番に)。私は最後のものが欲しい

以前の投稿で同様の解決策を見ました。

sed '$!N; /\(.*\)\n\1:FOO/D; P;D' file

しかし、私に合わせて修正することはできません。

ベストアンサー1

システムにいる場合は、uniqこの-w nオプションを使用して比較を最初に制限できます。N1行あたりの文字数:

uniq -w 12 file.txt

が返されます最初各ゲームは連続して表示されます。

欲しいなら最後各一致は連続して発生し、処理の前後にファイルを実行して行のtac順序を逆にしますuniq

tac file.txt | uniq -w 12 | tac

例:

[fish/]$ cat fish.txt
Apopterygion_alta.fasta
Apopterygion_oculus.fasta
Oncorhynchus_gorbuscha.fasta
Oncorhynchus_keta.fasta
Oncorhynchus_kisutch.fasta
Oncorhynchus_masou.fasta
Oncorhynchus_nerka.fasta
Oncorhynchus_tshawytscha.fasta
[fish/]$ uniq -w 12 fish.txt
Apopterygion_alta.fasta
Oncorhynchus_gorbuscha.fasta
[fish/]$ tac fish.txt | uniq -w 12 | tac
Apopterygion_oculus.fasta
Oncorhynchus_tshawytscha.fasta

おすすめ記事