各前方矢印(>)の前に新しい行(\ n)を追加します。

各前方矢印(>)の前に新しい行(\ n)を追加します。

私の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>/g2つのステップで実行する必要があります。

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

関連情報