Regex 对字符类中的空格正则表达式求反

Regex 对字符类中的空格正则表达式求反,regex,sed,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运算符求反 谢谢 您可以使用: str

捕获一行中所有内容的最佳方式是什么。例如,从以下方面:

>Peak_7847       Chr1    23988535_23998535
我想捕获

Peak_7847
我试过:

sed -e 's/^>\([^\s]\+\)\s.*$/\1/'
(这不起作用,并在
之后捕获整行内容)。如果我将
\s
替换为 “\t”,它的工作原理是:

sed -e 's/^>\([^ \t]\+\)\s.*$/\1/'
Peak_7847
如何对
\s
运算符求反

谢谢

您可以使用:

str='>Peak_7847       Chr1    23988535_23998535'
sed 's/^>\([^[:space:]]*\).*$/\1/' <<< "$str"
Peak_7847
str='>Peak_7847 Chr1 23988535_23998535'
sed的/^>\([^[:space:]*\).$/\1/'这可能适合您(GNU sed):

但为什么不:

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

啊哈,谢谢你!出于好奇,你知道为什么
\s
不起作用吗?(如果允许的话,我会接受你的回答。)实际上,sed的正则表达式引擎(BRE)不支持
\s
sed 's/\s.*//' file