Não use *
para isso. Use grep 'ki' trial_file.txt
ou grep -F 'ki' trial_file.txt
.
-
A menos que você passe a opção
-x
/--line-regex
,grep
retornará linhas que contêm uma correspondência em qualquer lugar, mesmo que a linha inteira não seja compatível. Então tudo que você precisa fazer é combinar parte da linha. Você não precisa fazer nada especial para indicar que pode haver mais caracteres. -
Em uma expressão regular ,
*
significa "zero ou mais do item anterior". Isso é totalmente diferente do significado em expansão do nome do caminho (veja também este artigo ,man 7 glob
e < href="https://www.gnu.org/software/bash/manual/bash.html#Filename-Expansion"> esta seção ). Então, por exemplo:-
ax*b
corresponde aa
, seguido por qualquer número dex
es (até nenhum), seguido porb
:ab
,axb
,axxb
,axxxb
, ... -
a[xz]*b
correspondea
seguido por qualquer número de caracteres em que cada um éx
ouz
, seguido porb
:ab
,axb
,azb
,axxb
,axzb
,azxb
,azzb
,axxxb
, ... -
a(xyz)*b
corresponde aa
, seguido a zero ou mais ocorrências da sequênciaxyz
, seguido porb
:ab
,axyzb
,axyzxyzb
,axyzxyzxyzb
, ...
-
Neste caso, parece que você está apenas procurando por texto. Você não precisa usar expressões regulares metacaracteres como .
, *
ou \
que têm significados especiais. É por isso que sugiro passar o -F
flag, que faz com que grep
pesquise por "strings fixas" em vez de executar a correspondência de expressões regulares.
Se, no entanto, você quiser corresponder apenas começando no início da linha, use um metacaractere de expressão regular: ^
, como mjb2kmn sugere . Estas âncoras correspondem ao início da linha. Nesse caso, você executaria grep '^ki' trial_file.txt
.
Para mais informações sobre as opções que o grep
suporta, consulte man grep
e o manual do GNU Grep .
Embora, em geral, sugiro incluir expressões regulares em '
'
quotes , neste caso sem aspas é necessário porque o shell não executa nenhum expansões em ki
ou ^ki
antes de passá-las para grep
.