Linuxを使用して段落を分離する

Linuxを使用して段落を分離する

リンク段落を含むテキストファイルがあります。各段落を空行で区切る必要があります。各段落は>FP0パターンで始まる必要がありますが、段落は互いに接続されているため、現在のファイルの行の先頭にはパターンが見つかりません。sedコマンドを試しましたが、>FP0パターンを含む行に基づいて区切りましたが、新しい段落の先頭には表示されません。

段落例

>FP004340TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT>FP00598AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA>FP005521GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

使用されたsedコードは

sed '/>/s/^/\n/'

出力は次のとおりです

>FP004340TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT

TTT>FP00598AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

A>FP005521GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

(新しい段落の開始時に> FP0の前に文字は必要ありません。)

ベストアンサー1

代わりにPerlを使用できます。

$ perl -pe 's/>/\n\n>/g' file


>FP004340TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT

>FP00598AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

>FP005521GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

ただし、ファイルの最初の文字がある場合は、その前に他の文字がある場合>にのみ置き換えることを制限できます。>

$ perl -pe 's/(.)>/$1\n\n>/g' file
>FP004340TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT

>FP00598AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

>FP005521GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

またはGNUを使用してくださいsed

$ sed -E 's/(.)>/\1\n\n>/g' file
>FP004340TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT

>FP00598AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

>FP005521GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

そして、次のようにsed

sed 's/\(.\)>/\1\
\
>/g' file
>FP004340TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT

>FP00598AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

>FP005521GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

おすすめ記事