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つまたは全体が見つかった場合は、最初の改行文字まで印刷するコマンドを使用してパターンスペースを印刷します。