我是新手GNU sed
(在 macOS 上运行)并希望缩短一些文件头(~50 K 头,78.3 Mb)。
我正在尝试通过指定带有-i
标志的备份扩展名来修改 FASTA 文件。
到目前为止我有
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
正确打印到屏幕。
在这种情况下如何打印到备份文件有什么想法吗?
您还必须指定该
-r
选项,以启用扩展正则表达式语法的解释(但请注意,-E
它比它更可移植-r
并且很快将取代它),因此您应该使用或者,求助于基本的正则表达式:
更新
在回复@terdon 的问题时,您确认这些文件是 FASTA 文件。在这种情况下,您可以通过仅考虑标题行(以 开头的行
>
)来提高效率,正如@terdon 所建议的那样: