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

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

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

                   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

答え2

次のシェルコマンドを使用してください。 sed 's/^[\t ]*//g' /tmp/data|awk -F : '{print $1}'|uniq|tr '\n' ' ' 前のタブとスペースを削除し、awkで最初の列を選択し、同じIDをマージし、trを使用して複数行を1つに変換します。

答え3

をするawk

awk -F: '{sub("[ \t]+","",$1)}; !seen[$1]++ {print $1}' textfile
  • :テキストを別々のフィールドに分割
  • 最初のフィールドから先行スペースを削除$1
  • $1切り取った内容を初めて見たときにのみ印刷してください。

答え4

単一のawkコマンドで

 awk '{print substr($1,1,index($1,":")-1)}' in.file | sort -u

どこ

  • awkはスペースとタブを切り取ります
  • index($1,":"):位置確認
  • substr( )部分文字列の抽出
  • sort -u創造性を保証します

関連情報