Uma primeira tentativa seria
grep '^[^ ]* *[Kk]'
Mas isso pressupõe que sempre exista exatamente um primeiro nome e nenhuma inicial.
Neste exemplo, você pode usar a opção -i
e substituir [Kk]
apenas por k
Pode ser melhor usar o primeiro cólon
grep -i ' k[^:]*:'
Se você realmente quer imprimir apenas o sobrenome, e não a linha inteira, você deve considerar usar o awk (ou perl)
Update: heres como a primeira expressão do grep '^[^ ]* *[Kk]'
é construída
' apostrophe delimits a parameter that contains spaces
and other so-called meta-characters that the shell might alter
^ caret means start of line
[ brackets mark a set of characters, any one of which is to be matched
^ inside brackets means negation or 'none of the following'
so '[^ ]' means "not a space"
] is the end of the set.
* means 0,1 or more of the prior character
so '[^ ]*' means any contiguous group of characters that does not
contain a space
then we have two spaces
* means 0,1 or more of the prior character
so space space * means 1 nor more spaces.
[Kk] means 'K' or 'k'
[^:]* means 0,1 or more characters that are not a colon
: followed by a colon