bash脚本tc -d [:punct:]不起作用

时间:2013-08-14 07:24:02

标签: bash shell quoting

这个命令在我的笔记本电脑上无法正常工作,因为它不会删除标点字符。

echo "asdaftafiatfiat!!!~~~$$$$tt" | tr -d [:punct:] 

tr -d [:punct:]从字符串中删除t

2 个答案:

答案 0 :(得分:0)

这是quoting issues,您的shell正在解释$!,因为您使用的是双引号。您需要使用单引号来避免使用bash解释任何字符:

$ echo 'asdaftafiatfiat!!!~~~$$$$tt' | tr -d [:punct:]
asdaftafiatfiattt

答案 1 :(得分:0)

我认为你的tr不会识别像[:punct:]这样的类,但尝试引用它:

... | tr -d '[:punct:]'

如果您发现bash历史记录扩展有困难,可以将其禁用:

shopt -u -o histexpand
echo 'asdaftafiatfiat!!!~~~$$$$tt' | tr -d '[:punct:]'