sed имеет возможности адресации строк, если это вам поможет:
$ seq 5 > input
$ sed '3s/.*/jeff/' input
1
2
jeff
4
5
$ sed '3,5s/.*/new/' input
1
2
new
new
new
Вместо использования цикла оболочки для обработки текстового файла рассмотрите инструмент, который более естественно обрабатывает текст, например awk:
$ cat input
AF bar
PO baz
other stuff
more other stuff
$ awk '/(AF)|PO/ { print }' input
AF bar
PO baz
$ awk '/stuff/ && !/more/ { print }' input
other stuff
Возможно, часть этого интервала выполняется с помощью символов TAB вместо SPC.
Вы могли бы сделать:
sed 's|\(file_csv_max_size:[[:space:]]*\)100\([[:space:]]*# in bytes\)|\1200\2|'
Где [[:space:]]*
заменяет любое количество любых символов, классифицируемых как пробелы в локали (, это включает SPC, TAB и некоторые другие ).
Мы фиксируем то, что до и после 100 внутри\(...\)
групп захвата , поэтому при замене они могут называться \1
и \2
соответственно.