我需要在 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}'