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,grepretornará 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 globe < href="https://www.gnu.org/software/bash/manual/bash.html#Filename-Expansion"> esta seção ). Então, por exemplo:-
ax*bcorresponde aa, seguido por qualquer número dexes (até nenhum), seguido porb:ab,axb,axxb,axxxb, ... -
a[xz]*bcorrespondeaseguido por qualquer número de caracteres em que cada um éxouz, seguido porb:ab,axb,azb,axxb,axzb,azxb,azzb,axxxb, ... -
a(xyz)*bcorresponde 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 .