Ainda não tenho certeza do que você está tentando fazer, mas isso deve ajudar.
obtenha nomes que contenham mais de um o
:
$ awk -F':' '$1~/.*o.*o/{print $1}' /etc/passwd
root
nobody
colord
foo
ou
cut -d':' -f 1 /etc/passwd | grep '.*o.*o.*'
Ou usando grep
(que é bobagem nesse caso) e sed
para remover os dois pontos:
grep -oP '^.*?:' /etc/passwd |grep '.*o.*o.*' | sed 's/://'
Se você realmente precisa fazer isso usando grep
sozinho, tente isto:
grep -oP '^.*?:' /etc/passwd |grep '.*o.*o.*' | grep -o '[^:]*'
obtenha nomes que contenham mais de um o
e termine em o
:
awk -F':' '$1~/.*o.*o/{print $1}' /etc/passwd | grep 'o$'
ou
cut -d':' -f 1 /etc/passwd | grep '.*o.*o.*' | grep 'o$'
pure grep:
grep -oP '^.*?:' /etc/passwd |grep '.*o.*o.*' | grep -o '[^:]*' | grep 'o$'
salva a saída em arquivos diferentes
cut -d':' -f 1 /etc/passwd | grep '.*o.*o.*' > two_os.txt
cut -d':' -f 1 /etc/passwd | grep '.*o.*o.*' > last_o.txt