テキストファイルの最初の列を印刷し、その中に各行を追加する方法は?

テキストファイルの最初の列を印刷し、その中に各行を追加する方法は?

以下はファイルのテキストです。

                   1NPD:A|PDBID|CHAIN|SEQUENCE  MDVTAKYELIGLMAYPIRHSLSPEMQNKALEKAGLPFTYMAFEVDNDSFPGAIEGLKALKMRGTGVSMPNKQLACEYV
                   1NPD:B|PDBID|CHAIN|SEQUENCE  MDVTAKYELIGLMAYPIRHSLSPEMQNKALEKAGLPFTYMAFEVDNDSFPGAIEGLKALKMRGTGVSMPNKQLACEYV
                   1NPY:A|PDBID|CHAIN|SEQUENCE  MINKDTQLCMSLSGRPSNFGTTFHNYLYDKLGLNFIYKAFTTQDIEHAIKGVRALGIRGCAVSMPFKETCMPFLDEIH
                   1NPY:B|PDBID|CHAIN|SEQUENCE  MINKDTQLCMSLSGRPSNFGTTFHNYLYDKLGLNFIYKAFTTQDIEHAIKGVRALGIRGCAVSMPFKETCMPFLDEIH                       
                   1NPY:C|PDBID|CHAIN|SEQUENCE  MINKDTQLCMSLSGRPSNFGTTFHNYLYDKLGLNFIYKAFTTQDIEHAIKGVRALGIRGCAVSMPFKETCMPFLDEIH                       
                   1NPY:D|PDBID|CHAIN|SEQUENCE  MINKDTQLCMSLSGRPSNFGTTFHNYLYDKLGLNFIYKAFTTQDIEHAIKGVRALGIRGCAVSMPFKETCMPFLDEIH                       
                   1NVT:A|PDBID|CHAIN|SEQUENCE  GPLGSMINAKTKVIGLIGHPVEHSFSPIMHNAAFKDKGLNYVYVAFDVLPENLKYVIDGAKALGIVGFNVTIPHKIEI                       
                   1NVT:B|PDBID|CHAIN|SEQUENCE  GPLGSMINAKTKVIGLIGHPVEHSFSPIMHNAAFKDKGLNYVYVAFDVLPENLKYVIDGAKALGIVGFNVTIPHKIEI

最初のスペースを削除したいです。タブもあると思います。 ID(例:1NPD、1NPYなど)のみを維持したいです。 A、B、Cのいずれでも、各シーケンスには1つのIDしか必要ありません。

これが私が望むファイルの外観です。

1NPD
1NPY
1NVT

ベストアンサー1

ファイルで処理するテキストがあり、ファイルin.fileに書き込もうとすると、out.file次のようになります。

tr -d ' ' < in.file | cut -d':' -f1 | sort -u > out.file

まず、in.fileからスペースを削除します。tr -d ' ' < in.file

2 つ目は ':' を区切り文字として使用してテキストをフィールドに切り捨て、最初のフィールドのみを選択します。cut -d':' -f1

最後に、結果がソートされ、一意の項目が選択され、out.fileに書き込まれます。sort -u > out.file

おすすめ記事