私は初心者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