> GDRLR5L04EQY8D 3931 | 1166ストリームを> 3931に編集

> GDRLR5L04EQY8D 3931 | 1166ストリームを> 3931に編集

次の形式の大きなテキストDNA配列ファイルがあります。

>name 
AACTGGGCT

>で始まらない行は変更せずに残し、追加情報と特殊文字を使用して現在の名前行を解析する必要があります。

以下があります(「D 3」の間にスペースではなくタブ文字です)。

>GDRLR5L04EQY8D 3931|1166
GACAAACGCTGGCGGGTGCATGAG

考える:

>3931
GACAAACGCTGGCGGGTGCATGAG

最初の部分を削除しようとしましたが、sed 's/\>*[[:blank:]]/>/g'動作しません。gawk最後にパイプと数字を削除できますか?

答え1

使用awk:

awk -F'[| ]' '{if ( $1 ~ /^>/ ) print ">"$2; else print $0}' file
>3931
GACAAACGCTGGCGGGTGCATGAG

パイプの前の最初の文字列の終わりと数値セットの先頭の間のスペースがaのTab代わりにaの場合、Spaceフィールド区切り文字を設定する正規表現はです[|\t]

答え2

sedソリューション:

sed '/^>/s/>.* \([0-9]*\)|.*/>\1/' < existing-file > new-file

これは、その後のコマンドが>で始まる入力行でのみ機能するようになります/^>/sed

答え3

その他sed:

$ sed -e 's/[^>].* \([0-9]*\)|.*/\1/' file
>3931
GACAAACGCTGGCGGGTGCATGAG

答え4

sed 's/>.* />/;s/|.*//
' <<\DATA
>GDRLR5L04EQY8D 3931|1166
GACAAACGCTGGCGGGTGCATGAG
DATA

出力

>3931
GACAAACGCTGGCGGGTGCATGAG

関連情報