Скажите, у меня есть содержимое этого файла:
1 lots
2 of
3 content
4 above
5
6 My match string
7 =======================
8
9 other
10 content
11 below
Я хочу номер строки "Моя строка соответствия".
Есть несколько фактов:
(1). Соответствие строки происходит только один раз в файле.
(2). Файл может не существовать при запуске моего скрипта.
(3). Файл может быть очень большим, так как его генерация требует времени, и эта строка записывается только через несколько секунд после генерации.
Мой скрипт bash ДОЛЖЕН содержать команду для генерации файла с последующим поиском вышеуказанного номера строки:
Мой скрипт выглядит так:
<command to generate file>
if file exists
tail -f -n +1 my_log_file | grep "My match string" -nm1
Для больших файлов, для создания которых требуется время, эта команда работает.
tail -f продолжает передавать содержимое в grep, и как только эта строка соответствия записывается в файл, -m1 успешно завершает grep (т.е. при первом совпадении).
Но для небольших файлов grep соответствует правильно и печатает совпадение, но не появляется, пока я не нажму ctrl + c
Почему эта разница в поведении, есть идеи, как это исправить?
Спасибо