Eu tenho um arquivo de texto (criado por um script) que contém apenas números em uma única linha como "5 17 42 2 87 33". Quero verificar todos os números com 50 (exemplo) e, se algum desses números for maior que 50, quero executar outro script de shell. Estou usando um programa vumeter, meu objetivo é executar um programa de reconhecimento de som se o nível de ruído for alto. Então, eu só quero determinar um limite.
Como uma função de aceitação de parâmetros e
input
como o nome de arquivo codificado:Fonte disso, ou faça um script, e chame-o como
greaterthan 50
ou qualquer número que você quiser.Você pode usar dc:
Usando
awk
:Usando um script bash:
Isso percorrerá cada número
file.txt
e verificará se esse número é maior que 50 e, em seguida, executará o script que você fornecer. No entanto, isso pode ser um problema ou desnecessário; Se houver vários números em seu arquivo de texto maiores que 50, você deve executar seu script várias vezes?Você pode dividir o arquivo em linhas e procurar linhas que correspondam a números maiores ou iguais a 50:
fmt -w1 | egrep -q '(\d\d\d|[5-9]\d)(\..*)?' && sh other_script.sh
A primeira cláusula entre parênteses em regexp procura pelo menos três dígitos, ou dois dígitos começando com '5'. A segunda cláusula permite um ponto decimal de opção e qualquer sufixo.
Use a
-q
opção de suprimir a saída normal, pois queremos apenas o status de saída.