このような高速ファイルが複数あります
>aaaaa.1_prot_CAA66754.1_10
MEKLLDAYLSSLRLNRRQVSEQTGLNYTTLQRASDKDALMISPRILWGIAMMVDKTPGQVLDELIELEMK
>bbbbb.1_prot_CAA66753.1_11
MMSKQDRINRRRRNIMKDAHRIAKLIVSNVGDYMVAMKLALKTVYAYKAMRKEVSSRGNAVEMHTLPLLD
GYARQQFEPEFVAGIPAWAIKKDFMSSSAQDILYFTIDTKVVKETEKAVEIEFATKNPKEHGYVDHHHTW
VAKSIMAA
タイトルをこのように変更しsed
たいawk
>aaaaa.1_10
MEKLLDAYLSSLRLNRRQVSEQTGLNYTTLQRASDKDALMISPRILWGIAMMVDKTPGQVLDELIELEMK
>bbbbb.1_11
MMSKQDRINRRRRNIMKDAHRIAKLIVSNVGDYMVAMKLALKTVYAYKAMRKEVSSRGNAVEMHTLPLLD
GYARQQFEPEFVAGIPAWAIKKDFMSSSAQDILYFTIDTKVVKETEKAVEIEFATKNPKEHGYVDHHHTW
VAKSIMAA
sed
しかし、私は少ししか知りません。
sed 's/.\(.\)$/\1/'
各行の 2 番目から最後の文字を削除し、「-」の最初の項目を保持します。
答え1
awk
1つの方法は次のとおりです。
$ awk '/^>/{sub(/\.[^.]+/,"")}1' file
>aaaaa.1_10
MEKLLDAYLSSLRLNRRQVSEQTGLNYTTLQRASDKDALMISPRILWGIAMMVDKTPGQVLDELIELEMK
>bbbbb.1_11
MMSKQDRINRRRRNIMKDAHRIAKLIVSNVGDYMVAMKLALKTVYAYKAMRKEVSSRGNAVEMHTLPLLD
GYARQQFEPEFVAGIPAWAIKKDFMSSSAQDILYFTIDTKVVKETEKAVEIEFATKNPKEHGYVDHHHTW
VAKSIMAA
>
これは、(ヘッダー行)で始まる行を変更することを考慮します。
.
この行は、「文字で始まり、構成される文字列」パターンを置き換えます。いいえ「(最初の文字から始まり、次の文字を除く.
一連の文字を意味します)と「nothing」を含めて削除します。.
.
1
ルールブロックから外れたように見えることは、awk
これまでに行われたすべての可能な修正を含む現在の行を印刷するように指示します。
答え2
$ sed 's/_.*_/_/' file
>aaaaa.1_10
MEKLLDAYLSSLRLNRRQVSEQTGLNYTTLQRASDKDALMISPRILWGIAMMVDKTPGQVLDELIELEMK
>bbbbb.1_11
MMSKQDRINRRRRNIMKDAHRIAKLIVSNVGDYMVAMKLALKTVYAYKAMRKEVSSRGNAVEMHTLPLLD
GYARQQFEPEFVAGIPAWAIKKDFMSSSAQDILYFTIDTKVVKETEKAVEIEFATKNPKEHGYVDHHHTW
VAKSIMAA
答え3
最初のポイントから2番目のポイントまでのタイトル部分を削除すると仮定すると、次のコマンドは最初のポイントから2番目のポイントまでのすべてのエントリを削除しますが、2番目のポイントは削除しません。
sed 's/\.[^.]*//' file
または、最初のポイントから2番目のポイントまでのすべてのアイテムを削除します。
sed 's/[^.]*\.//2' file
私はあなたがやろうとしているものが最後のポイントから最後までビットをキャプチャし、最初のポイントの完全な文字列をキャプチャされた文字列に置き換えると信じています。
sed 's/\..*\(\..*\)/\1/' file
awk
各行をドットで区切られたフィールドのセットとして使用して処理するには、各行から次に始まる2番目のフィールドを削除します>
。
awk -F . 'BEGIN { OFS=FS } /^>/ { $0 = $1 OFS $3 }; 1' file
答え4
awk -F "_" '/^>/{$0=$1"_"$NF}1' file
出力
>aaaaa.1_10
MEKLLDAYLSSLRLNRRQVSEQTGLNYTTLQRASDKDALMISPRILWGIAMMVDKTPGQVLDELIELEMK
>bbbbb.1_11
MMSKQDRINRRRRNIMKDAHRIAKLIVSNVGDYMVAMKLALKTVYAYKAMRKEVSSRGNAVEMHTLPLLD
GYARQQFEPEFVAGIPAWAIKKDFMSSSAQDILYFTIDTKVVKETEKAVEIEFATKNPKEHGYVDHHHTW
VAKSIMAA