2

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

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

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

4

2 回答 2

0

这是一个引用问题,您的 shell 正在解释$!因为您使用的是双引号。您需要使用单引号来避免任何字符被解释为bash

$ echo 'asdaftafiatfiat!!!~~~$$$$tt' | tr -d [:punct:]
asdaftafiatfiattt
于 2013-08-14T07:28:28.070 回答
0

我认为您的 tr 无法识别 [:punct:] 之类的类,但请尝试引用它:

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

如果您发现 bash 的历史扩展有困难,您可以禁用它:

shopt -u -o histexpand
echo 'asdaftafiatfiat!!!~~~$$$$tt' | tr -d '[:punct:]'
于 2013-08-14T07:34:17.717 回答