如何组合正则表达式的 POSIX 字符类?

如何组合正则表达式的 POSIX 字符类?

我需要在 sed 使用的正则表达式中组合不同的字符类。我需要匹配[:word:]和 减号-。看起来怎么样?我所有的尝试都未能尝试或寻找解决方案。

在以下字符串中,我想匹配所有内容,直到第一个空格:

foo-bar     |
baz-xyz-123 |

答案1

POSIXly:

sed 's/[^[:alnum:]_-]//g'

将删除当前区域设置中所有非字母数字字符,_并且-.

$ echo 'foo-bar     |' | sed -e 's/[^[:alnum:]_-]//g'
foo-bar

但是如果你想打印第一个空格之前的所有内容:

sed -e 's/^\([^ ]*\) .*/\1/'

或者awk

awk '{print $1}'

相关内容