2 番目の下線以降のすべての項目を削除します。

2 番目の下線以降のすべての項目を削除します。

2番目のアンダースコア(アンダースコア自体を含む)の後のテキストをすべて削除したいのですが、すべての行を削除したくありません。各ターゲット行はパターン(> gi_)で始まります。

はい。

入力する

>gi_12_pork_cat

ACGT

>gi_34_pink_blue

CGTA

出力

>gi_12

ACGT

>gi_34

CGTA

答え1

私たちの中の怠惰な人のために:

cut -d_ -f1,2 input

私たちに与える:

bash-[514]$ cat input
>gi_12_pork_cat   
ACGT
>gi_34_pink_blue    
CGTA

bash-[515]$ cut -d_ -f1,2 input
>gi_12
ACGT    
>gi_34
CGTA

答え2

次の速記も使用されますawk

awk -F_ '{print $1 (NF>1? FS $2 : "")}' yourfile

答え3

$ awk -F_ 'BEGIN {OFS="_"} /^>gi/ {print $1,$2} ! /^>gi/ {print}' input
>gi_12
ACGT
>gi_34
CGTA

答え4

sed -ne '/^>gi_/s/_/\n/2;P' yourfile

説明する

  • 文字列で始まる行に対してのみ>gi_subに影響を与えたいと思います_ ---> \n。次に、P改行文字が1つまたは全体が見つかった場合は、最初の改行文字まで印刷するコマンドを使用してパターンスペースを印刷します。

関連情報