Encontre palavras que começam com a letra inserida pelo usuário no arquivo especificado - bash

Encontre palavras que começam com a letra inserida pelo usuário no arquivo especificado - bash

Quero criar um script bash, que encontrará todas as palavras que começam com a letra inserida pelo usuário no arquivo especificado (especificado no script ou criará uma entrada do usuário para ele também). Sou um pouco mais que iniciante em Linux, meu código é:

    #! /bin/bash

echo 'Please enter starting letter of Name'
read name
result=$(awk '/$name/ {print}' /home/beka/scripts/names.txt)
echo "$(result)"

este erro resulta como:

    Please enter starting letter of Name
G
/home/beka/scripts/test.sh: line 6: result: command not found

O que estou fazendo errado? Tentei pesquisar exemplos do awk, mas não consigo encontrar a solução exata. Agradeço antecipadamente.


CÓDIGO EDITADO

#! /bin/bash

echo 'Please enter starting letter of Name'
read name

if [[ $name == [A-Z] ]]
then 
awk "/$name/{print}" /home/beka/scripts/names.txt
else
echo '0'
fi

EDITAR nomes.txt é uma lista de nomes

Michael
Christopher
Jessica
Matthew
Ashley
Jennifer
Joshua

OUTRA EDIÇÃO

#! /bin/bash

echo 'Please enter starting letter (Uppercase) of name'
read name

if [[ $name == [A-Z] ]]
then 
echo "---Names starting with $name---"
awk "/$name/{print}" /home/beka/scripts/names.txt
elif [[ $name == [a-z] ]]
then
awk "/$name/{print}" /home/beka/scripts/names.txt
else
echo '---------'
echo 'Names not found'
fi

Responder1

echo "$(result)"está tentando executar um comando chamado resultcortesia da $(result)peça, daí a mensagem de erro result: command not found.

Tente isto (não testado):

#!/usr/bin/env bash

result=''
while [[ -z "$result" ]]; do
    echo 'Please enter starting letter of Name'
    read name

    if [[ $name == [A-Z] ]]
    then 
        result=$(awk -v name="$name" 'index($0,name)==1' /home/beka/scripts/names.txt)
    else
        echo '0'
    fi
done
echo "$result"

Para tornar a pesquisa sem distinção entre maiúsculas e minúsculas:

awk -v name="$name" 'index(tolower($0),tolower(name))==1' /home/beka/scripts/names.txt

Obviamente, você também terá que mudar $name == [A-Z]para $name == [a-zA-Z]ou $name == [[:alpha:]]se quiser aceitar uma letra minúscula como caractere de pesquisa.

informação relacionada