Как заменить конкретную строку в файле аргументом с помощью сценария оболочки? - PullRequest
0 голосов
/ 16 мая 2018

Я хотел бы заменить определенную строку в текстовом документе, используя настраиваемый аргумент.Пример текстового документа:

DialogUpdateTags,
DialogProductNotFound
{
    width:                          1000;
    height:                         166;
}

В приведенном выше примере я хочу отредактировать строку 4 «1000» специально, чтобы скрипт не редактировал другие значения ширины, которые также могут быть 1000. Пока у меня есть это:

echo "Enter the desired width size in pixels"
read pixelsize
echo "Width size will be $pixelsize"

После этого мне нужна команда sed, кто-нибудь может помочь?Есть ли способ указать SEP только на строку 4 и больше ничего не редактировать?

Ответы [ 2 ]

0 голосов
/ 17 мая 2018
width="30"
path=textfile.txt
sed -i "4s/1000;/$width;/" "$path"
0 голосов
/ 16 мая 2018

С GNU sed:

pixelsize="30"
sed -E "4s/(width: *)[^;]*/\1$pixelsize/" file

Вывод:

DialogUpdateTags,
DialogProductNotFound
{
    width:                          30;
    height:                         166;
}

Если вы хотите редактировать свой файл "на месте", используйте опцию sed -i.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...