Я пытался создать сценарий удара, чтобы сделать это
У меня есть текстовый файл...
Должен проверить, содержит ли тот файл строку, test
.
Если да, свяжите численное значение с той строкой....
"test : 201"
сравните значение с другим ссылочным номером 100
100 значение, которое является вводом данных пользователем..
if 201> 100
сделайте это..
еще
сделайте это..
Как я могу достигнуть этого?
Я думаю, что Вы ищете сценарий оболочки, который может взять два аргумента - имя файла и ссылочный номер. Давайте назовем файл F и ссылочный номер R.
Если файл F содержит строку формы test : N
где N является числом, Вы хотите выполнить некоторое действие если N> R и альтернативное действие если N <= R.
Если я понял проблему правильно, этот сценарий оболочки должен добиться цели:
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
Предположим, что Вы сохраняете это в названном файле myscript
. Затем можно работать ./myscript input.txt 100
и если input.txt
содержит строку как test : 52
вот увидишь less than or equal to
отраженный к стандартному выводу.
Обновление: автор вопроса перечисляет альтернативный сценарий в комментариях, где может быть несколько соответствий строк test : n
в файле. Самое большое значение, связанное с test
потребности, которые будут выбраны и по сравнению со ссылкой. Просто измените первую строку в сценарии:
matching=$(grep "test" $1 | cut -d ":" -f 2 | sort -gr | head -n 1)
Последующие строки совпадают с прежде.