否定字符类中的空白正则表达式

时间:2013-12-20 19:58:36

标签: regex sed

捕获空白行中所有内容的最佳方法是什么。例如,从中:

>Peak_7847       Chr1    23988535_23998535

我想抓拍

Peak_7847

我试过了:

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

(不起作用,并在>之后捕获整行)。如果我用\s替换 “\ t”,它有效:

sed -e 's/^>\([^ \t]\+\)\s.*$/\1/'
Peak_7847

如何否定\s运算符?

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以使用:

str='>Peak_7847       Chr1    23988535_23998535'
sed 's/^>\([^[:space:]]*\).*$/\1/' <<< "$str"
Peak_7847

答案 1 :(得分:1)

这可能适合你(GNU sed):

sed -r 's/(\S+).*/\1/' file

但为什么不呢:

sed 's/\s.*//' file