私のfile1.fa
形式は次のとおりです。
>XXX[YY]
ZZZZZZ>XXX[YY]
ZZZZZZ>XXX[YY]
ZZZZZZ
sedコマンドを使用して、前方矢印の前に新しい行を追加しようとしましたが、機能しません。
sed 's/ \?\>/ \n\>/g' file1.fa > file2.fa
必須ファイル形式:
>XXX[YY]
ZZZZZZ
>XXX[YY]
ZZZZZZ
>XXX[YY]
ZZZZZZ
別のキャラクターで試してみましたが、スクリプトはうまくいきます。
sedで前方に矢印を処理するときに含める必要がある制限があるかどうか疑問に思います。それとも、ここで何が起こっているのかを知っている人はいますか?
答え1
逃げてはならない>
(\>
特殊単語の境界パターン)。
これは私にとって効果的です(GNUを使用sed
)。
sed -e 's/>/\n>/g' file1
あなたの場合、私が得た結果は次のとおりです。
>XXX[YY]
ZZZZZZ
>XXX[YY]
ZZZZZZ
>XXX[YY]
ZZZZZZ
答え2
これは\>
、単語文字と単語以外の文字の間の幅がゼロの空白と一致する特殊なパターンです。はどんな意味でも特別ではないので、>
エスケープする必要はありません。
>
Standard を使用して、最初の行を除くすべての行の前に改行文字を追加するには、sed
次の手順を実行します。
$ sed '2,${ y/>/\n/;s/\n/&>/g; }' file
>XXX[YY]
ZZZZZZ
>XXX[YY]
ZZZZZZ
>XXX[YY]
ZZZZZZ
標準はsed
挿入された改行文字では機能しないため、s/>/\n>/g
2つのステップで実行する必要があります。
2,$
最初の行を除く入力のすべての行を処理します。ここに含まれるコマンドは{ ... }
この行に適用されます。
このコマンドは、y/>/\n/
この文字のすべてのインスタンスを改行文字に置き換えます。コマンド>
y
できる標準に改行文字を挿入しますsed
。
生成された各改行文字をs/\n/&>/g
一致する改行文字に置き換え、その後に>
。&
コマンドの置換部分にある場合は、一致するs
パターンを挿入します。
答え3
私は次のことを試してみました。
注文する: sed "/^[^>]/s/>.*/\n&/g" filename
出力
sed "/^[^>]/s/>.*/\n&/g" filename
>XXX[YY]
ZZZZZZ
>XXX[YY]
ZZZZZZ
>XXX[YY]
ZZZZZZ