tr实用程序 - 为括号表达式[[:punct:]]添加例外

时间:2014-01-22 21:35:16

标签: regex linux expression tr

我想知道在使用tr实用程序时是否有一种简单的方法可以向[[:punct:]]括号表达式添加例外:

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

例如:如果标点符号为 - ,请勿执行任何操作。

1 个答案:

答案 0 :(得分:2)

您可以使用否定前瞻:'(?![-)])[[:punct:]]'

首先检查下一个字符是否既不是-也不是),然后检查它是否是标点字符。使用负面后卫也是可能的,可能会或可能不会更快:'[[:punct:]](?<![-)])'

编辑:因为tr显然不支持Regex(只有基本的POSIX),所以你应该使用另一个实用程序,例如: sed:cat *.txt | sed -r 's/(?![\-@\/\\¤%+[&|=^\]$_*#])[[:punct:]]/\012/g'