как передать строку с пробелами между ними?

sed имеет возможности адресации строк, если это вам поможет:

$ seq 5 > input
$ sed '3s/.*/jeff/' input
1
2
jeff
4
5
$ sed '3,5s/.*/new/' input
1
2
new
new
new

Вместо использования цикла оболочки для обработки текстового файла рассмотрите инструмент, который более естественно обрабатывает текст, например :

$ 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

0
15.09.2020, 09:14
1 ответ

Возможно, часть этого интервала выполняется с помощью символов TAB вместо SPC.

Вы могли бы сделать:

sed 's|\(file_csv_max_size:[[:space:]]*\)100\([[:space:]]*# in bytes\)|\1200\2|'

Где [[:space:]]*заменяет любое количество любых символов, классифицируемых как пробелы в локали (, это включает SPC, TAB и некоторые другие ).

Мы фиксируем то, что до и после 100 внутри\(...\)групп захвата , поэтому при замене они могут называться \1и \2соответственно.

2
18.03.2021, 23:04

Теги

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