Eu acho que você está procurando por um script de shell que pode levar dois argumentos - um nome de arquivo e um número de referência. Vamos chamar o arquivo F e o número de referência R.
Se o arquivo F contiver uma linha do formulário test : N
, em que N é um número, você deseja executar alguma ação se N > R e uma ação alternativa se N < = R.
Se eu entendi o problema corretamente, este script de shell deve fazer o seguinte:
matching=$(grep "test" $1 | head -n 1 | cut -d ":" -f 2)
if [ -z $matching ]; then
echo "no matching lines!" >&2
else
trimmed=$(echo $matching | xargs)
if [ $trimmed -gt $2 ]; then
echo "greater"
else
echo "less than or equal to"
fi
fi
Suponha que você salve isso em um arquivo chamado myscript
.
Em seguida, você pode executar ./myscript input.txt 100
e se input.txt
contiver uma linha como test : 52
, você verá less than or equal to
ecoado na saída padrão.
Atualização: O consulente lista um cenário alternativo nos comentários, onde pode haver várias linhas correspondentes a test : n
em um arquivo. O maior valor associado a test
precisa ser selecionado e comparado com a referência. Basta modificar a primeira linha do script:
matching=$(grep "test" $1 | cut -d ":" -f 2 | sort -gr | head -n 1)
As linhas subsequentes são as mesmas de antes.