Как создать сценарий Bash, который может искать строку в файле и получать числовое значение строки и сравнивать с другим значением

Я пытался создать скрипт bash для этого

У меня есть текстовый файл ...

вывод файла может быть не в правильной структуре .. Нужно проверить содержит ли этот файл строку, test. Если да, получите числовое значение, связанное с этой строкой .... "test : 201" сравнить значение с другим ссылочным номером 100 100 - это значение, которое является пользовательским вводом .. if 201> 100 сделайте это .. еще сделайте это .. [ ! d2]

Как я могу это достичь?

-1
задан 24 May 2018 в 22:09

3 ответа

я думаю, что вы ищете скрипт, который принимает два параметра - имя и идентификационный номер. Назовем файл F и регистрационный номер р.!н0]

если файл F содержащий строку вида [Ф3], где N-количество, которое вы хотите выполнить какие-то действия, если n > r и альтернативное действие, если N <= р.

если я правильно понял проблему, этот скрипт должен делать свое дело:

[Ф1]

предположим, что вы сохраните это в файл с названием [Ф4]. Затем вы можете запустить [ф5] и если [ф6] содержит строку типа [ф7] вы увидите [ф8] эхом в стандартный вывод.

обновление

: в аскер списки альтернативный сценарий в комментариях, где там может быть несколько строк, соответствующих [F9] в файл. Наибольшее значение, связанное с [ф10] должен быть выбран и сравниваются с эталонными. Просто измените первую строку в скрипте:

[Ф2]

последующие строки такие же, как и раньше.

4
ответ дан 8 June 2018 в 13:59
  • 1
    ничего себе здорово .. это сработало для меня .. Большое спасибо Картик .. – GIG 24 May 2018 в 17:16
  • 2
    Привет,у меня есть один сценарий.. если я вижу больше значений теста в файл..вроде теста :200 и теста :150.. я хочу взять наибольшее значение и сравниваем с пользователя входное значение..как мы можем изменить сценарий.. – GIG 25 May 2018 в 06:50
  • 3
    Я обновлю ответ, чтобы отразить это требование – Kartik Sabharwal 25 May 2018 в 07:19

Я думаю, вы ищете сценарий оболочки, который может принимать два аргумента - имя файла и ссылочный номер. Назовем файл F и ссылочный номер R.

Если файл F содержит строку вида test : N, где N - число, вы хотите выполнить какое-либо действие, если N> R и альтернативное действие если N & lt; = 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)

Последующие строки такие же, как и раньше.

4
ответ дан 17 July 2018 в 13:36

Я думаю, вы ищете сценарий оболочки, который может принимать два аргумента - имя файла и ссылочный номер. Давайте назовем файл F и ссылочный номер R.

Если файл F содержит строку вида test : N, где N - число, вы хотите выполнить какое-либо действие, если N> R и альтернативное действие если N & lt; = 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)

Последующие строки такие же, как и раньше.

4
ответ дан 20 July 2018 в 13:40

Другие вопросы по тегам:

Похожие вопросы: