根据男人的说法:
-d, - 删除SET1中的删除字符,不要翻译
然而
$ echo "abc" | tr "a" -d
-bc
现在可以使用其他命令(例如
)将其删除echo "abc" | tr "a" -d | sed 's/-//'
但我在这里错过了一些东西吗?为什么删除用 - ?
替换答案 0 :(得分:2)
你做错了。您在SET1
之前传递了该选项,正如手册中所说tr [-Ccu] -d string1
。所以你的命令应该是echo "abc" | tr -d "a"
。
命令tr "a" -d
将所有a
替换为-
。尝试以下命令,你会弄清楚发生了什么......
echo "abc" | tr "a" de
echo "abc" | tr "a" +e
答案 1 :(得分:1)
您的选项和参数的顺序错误:
tr "a" -d
标准命令行语法是在所有非选项参数之前提供选项,如下所示:
tr -d a
在此语法下,第一个非选项参数(或显式参数--
)终止选项处理,之后命令行上的所有其他内容都是参数。
像gcc
这样的一些命令传统上违反了这个约定并将参数与参数混合在一起。在这种情况下,通常是因为选项和参数的排序很重要(通常,选项仅适用于跟随它们的参数,但不适用于它们之前的参数)。
此外,一些命令放宽了规则并允许在每种情况下使用参数混合选项,但这是非标准的,通常不应使用,特别是如果您希望代码尽可能兼容/可移植。 / p>