我想知道在使用tr实用程序时是否有一种简单的方法可以向[[:punct:]]
括号表达式添加例外:
cat *.txt | tr '[[:punct:]]' '\012'
例如:如果标点符号为 - 或),请勿执行任何操作。
答案 0 :(得分:2)
您可以使用否定前瞻:'(?![-)])[[:punct:]]'
首先检查下一个字符是否既不是-
也不是)
,然后检查它是否是标点字符。使用负面后卫也是可能的,可能会或可能不会更快:'[[:punct:]](?<![-)])'
编辑:因为tr显然不支持Regex(只有基本的POSIX),所以你应该使用另一个实用程序,例如: sed:cat *.txt | sed -r 's/(?![\-@\/\\¤%+[&|=^\]$_*#])[[:punct:]]/\012/g'