我想知道,在使用tr实用程序时,是否有一种简单的方法将异常添加到[[:punct:]]括号表达式中:

cat *.txt | tr '[[:punct:]]' '\012'

例如:如果标点符号是-或,则不要执行任何操作。

最佳答案

你可以使用否定的展望:'(?![-)])[[:punct:]]'
这将首先检查下一个字符是否既不是-也不是),然后检查它是否是标点字符。在后面使用否定的眼光也是可能的,而且可能更快,也可能更快:'[[:punct:]](?<![-)])'
编辑:由于tr显然不支持regex(仅支持基本posix),因此应该使用另一个实用程序,例如sed:cat *.txt | sed -r 's/(?![\-@\/\\¤%+[&|=^\]$_*#])[[:punct:]]/\012/g'

10-08 04:04