![如何组合正则表达式的 POSIX 字符类?](https://linux22.com/image/71368/%E5%A6%82%E4%BD%95%E7%BB%84%E5%90%88%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%20POSIX%20%E5%AD%97%E7%AC%A6%E7%B1%BB%EF%BC%9F.png)
我需要在 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}'