我想知道,在使用tr实用程序时,是否有一种简单的方法将异常添加到[[:punct:]]
括号表达式中:
cat *.txt | tr '[[:punct:]]' '\012'
例如:如果标点符号是-或,则不要执行任何操作。
最佳答案
你可以使用否定的展望:'(?![-)])[[:punct:]]'
这将首先检查下一个字符是否既不是-
也不是)
,然后检查它是否是标点字符。在后面使用否定的眼光也是可能的,而且可能更快,也可能更快:'[[:punct:]](?<![-)])'
编辑:由于tr显然不支持regex(仅支持基本posix),因此应该使用另一个实用程序,例如sed:cat *.txt | sed -r 's/(?![\-@\/\\¤%+[&|=^\]$_*#])[[:punct:]]/\012/g'