以下はファイルのテキストです。
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
創造性を保証します