tr on mac:错位的序列星号

tr on mac: misplaced sequence asterisk

我对所有这些都很陌生,所以请原谅任何错误。
我正在研究 mac.

我正在尝试按照本教程进行操作 here
当我输入 tr "[ -%,;\(\):=\.\\*[]\"\']" "_" < hug_tol.fasta > hug_tol.clean.fasta
我收到错误消息 tr:misplaced sequence asterisk
我猜文件中一定有错误,但由于我试图删除这些字符,所以错误消息没有意义。
我在 Google 上没有找到任何东西,所以也许有人可以帮助我。

本教程的作者似乎对 tr 使用准正则表达式字符 class 语法。 tr 的范围远不止于此。它只接受一些转义字符和特殊字符。将您的命令简化为

tr "%,;():=.*[]\"\' \\\-" "_" < hug_tol.fasta > hug_tol.clean.fasta

-字符确实有特殊含义,所以放在末尾:在开始时它会被解释为命令行参数,而在中间它指定一个字符范围。在 bash 中,* 不会用双引号展开。对于 tr,要指定普通的 \,您需要双 \(因为它是转义字符)。要通过 bash,您需要 \\

您可能还想考虑使用 -c 选项来指定补集(您要保留的字符),因为它可能要小得多:

tr -c "A-Za-z0-9_" "_" < hug_tol.fasta > hug_tol.clean.fasta

或更简洁

tr -c "[:alnum:]" "_" < hug_tol.fasta > hug_tol.clean.fasta