Sign up ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It's 100% free, no registration required.

I'm trying to grep username users |grep "^\b\w*\b" -P how to do it with grep?

share|improve this question
Why grep? grep is for searching. You seem to need either cut or awk, but the read builtin also seems suitable. –  manatwork Dec 7 '12 at 12:20
this work as @peterph proposed ^\w*\b. Are cut or sed/awk more convinient? my case is simple. i can use myVar=`users | grep -o "^\w*\b"`, no? –  Yurij73 Dec 7 '12 at 13:23
Compare them: users | cut -d' ' -f1, users | sed 's/\s.*//', users | awk '$0=$1'. If you want to store it in a variable, using bash: read myVar blah < <(users) or read myVar blah <<< $(users). –  manatwork Dec 7 '12 at 13:33
@Yurij73 the difference lies mostly in the execution time. with read you don't spawn a new process. If you do this many times, you'll notice the difference. –  peterph Dec 7 '12 at 15:19
Does it better use awk? #!/bin/bash ( users|awk '$0=$1' )>file; read myVar <file; rm -f file; echo $myVar; –  Yurij73 Dec 7 '12 at 20:03

1 Answer 1

up vote 3 down vote accepted

If you really want return just the first word and want to do this with grep and your grep happens to be a recent version of GNU grep, you probably want the -o option. I believe you can do this without the -P and the \b at the beginning is not really necessary. Hence: users | grep -o "^\w*\b".

Yet, as @manatwork mentioned, shell built-in read or cut/sed/awk seem to be more appropriate (particularly once you get to the point you'd need to do something more).

share|improve this answer
fine, all done. thanks –  Yurij73 Dec 7 '12 at 13:20

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.