我正在尝试用空格替换几个符号,我认为tr
这是正确的命令。所以我尝试了
cat myfile | tr '_[]()-/' ' '
但我得到了错误
range-endpoints of ']-/' are in reverse collating sequence order
大概是因为我在输入字符中不能有减号。我可以使用 来完成此操作tr
吗?
答案1
该消息显然来自 GNU tr
,可能是由于区域设置的某些问题造成的。这信息页面tr
建议将最后一个放在-
集合中,以避免将其混淆为集合的一部分范围,例如,
cat myfile | tr '_[]()/-' ' '
答案2
对于任何 POSIX tr
:
tr '_][()/-' '[ *]' <file
将工作。
[ *]
请注意, POSIX 要求使用。在:
tr string1 string2
什么时候字符串2比。。。短字符串1, BSDtr
将填充字符串2最后一个字符为字符串2,因此tr '_][()/-' ' '
不能保证有效。