sed は -i フラグを使用して所定の位置に変更します。

sed は -i フラグを使用して所定の位置に変更します。

私は初心者GNU sed(macOSで実行)で、いくつかのファイルヘッダー(〜50Kヘッダー、78.3Mb)を減らしたいと思います。

フラグでバックアップ拡張子を指定してFASTAファイルを変更しようとしています-i

これまで私

sed -i.bak 's/^([^|]+).[^|]+(.*)/\1\2/' file.fas 

それからfile.fas.bak

ただし、エラーが発生します。

sed: 1: "s/^([^|]+).[^|]+(.*)/\1\2/": \1 not defined in the RE

説明がsed -re 's/^([^|]+).[^|]+(.*)/\1\2/' file.fas画面に正しく印刷されます。

この状況でバックアップファイルとして印刷する方法についてのアイデアはありますか?

答え1

-rまた、拡張正規表現構文を解釈できるようにするには、このオプションを指定する必要があります(しかし、参考にしてください以下より-E携帯性に優れています。-rすぐに交換します。)したがって使用する必要があります。

sed -E -i.bak 's/^([^|]+).[^|]+(.*)/\1\2/' file.fas

または、デフォルトの正規表現を使用します。

sed -i.bak 's/^\([^|]\{1,\}\).[^|]\{1,\}\(.*\)/\1\2/' file.fas

修正する

@terdonの質問に答えて、そのファイルがFASTAファイルであることを確認しました。この場合、>@terdonが提案したように、ヘッダー行(次から始まる行)のみを考慮して効率を向上させることができます。

sed -E -i.bak 's/^(>[^|]+).[^|]+(.*)/\1\2/' file.fas

関連情報