но ни первый ни второй вариант не понимаю как работают=)
если не понимаю -- не могу использовать=) Разъясните пожалуйста, или пошлите туда, где мне помогут=)
но ни первый ни второй вариант не понимаю как работают=)
мою подпись читали?
sed -rn "/solutiontime=$xxx/,/i=[0-9]+/p" | sed -r '${ /i=[0-9]+/d; }'
кратко:
/X/,/Y/ это адресное выражение: от строки с X до строки с Y, p это команда, печать сокращённо. Беда этого скрипта в том, что он иногда захватывает ненужную i=324, потому вторая команда отрезает последнюю i=324, если она есть.
спасибо за помощь, почти во всем разобрался.
осталось понять как не писать первую строчку, по которой и происходит поиск.
или выводить ее с дополнительным "#" в начале строки
осталось понять как не писать первую строчку, по которой и происходит поиск.
awk -v t=1e-3 '/^i=/{p=0}p{print}$0==("soulutiontime=" t){p=1}'
Программа в развернутом виде:
user@localhost
# Изначально p=="", т.е. false. Программа обрабатывает по одной записи из файла, запись — строка.
/^i=/ { p=0 } # Если строка начинается с "i=", то p=0
p {print} # Если p, печатаем строку
$0==("soulutiontime=" t) { p=1 } # Если строка равна solutiontime=<заданное значение>, то p=1.
осталось понять как не писать первую строчку, по которой и происходит поиск.
обычно пишется bash-скрипт, который читает командой read значение (с клавиатуры, или от другого скрипта), и потом выполняет sed или awk. Так получается проще всего ИМХО. Хотя я, помнится, даже гуй к sed привинтил (конечно, это просто пример, но иногда полезно - многие до ужаса боятся консоли).
обычно пишется bash-скрипт, который читает командой read значение (с клавиатуры, или от другого скрипта), и потом выполняет sed или awk. Так получается проще всего ИМХО.
Именно в этом направдении я и думаю. Когда будет больше времени -- обязательно напишу.