Кажется, это обычный файл структур C, написанный/прочитанный с использованием Gnu LibC. Макросы OBSTACKS
См. источники
https://github.com/msekletar/mlocate/blob/master/src/updatedb.c#L720
https://github.com/msekletar/mlocate/blob/master/src/locate.c#L413
Вы можете получить что-то подобное с помощью
find / -xdev -type f -not -path \*\.git\/\* | gzip -9 > /tmp/files.gz
zgrep file_i_want /tmp/files.gz
Программы Awk состоят из шаблон {действие} пар :если вы не укажете шаблон , то действие будет применено к каждой записи. В вашем случае вы можете добавить шаблон для соответствия только записям (строк ), которые начинаются сdropNumber
:
awk... '/^dropNumber/ { sub(srch,repl,$0) } { print }'...
Аналогично Sed, используйте регулярное выражение для адреса только нужной строки:
sed "/^dropNumber/s/$OLD_DROP_NUMBER/$NEW_DROP_NUMBER/"
(обратите внимание, что вам понадобятся двойные кавычки вместо одинарных кавычек, показанных в вашем вопросе, иначе переменные оболочки будут рассматриваться как строковые литералы ).