Удалить определенное слово из файла с помощью сценария оболочки - PullRequest
0 голосов
/ 01 июля 2019

Я бы попросил помочь с базовым сценарием оболочки, который должен выполнить следующую работу.

  1. Файл конкретного слова из данного файла (путь к файлу всегда постоянен)
  2. Резервное копирование файла
  3. Удалить конкретное слово или заменить слово на;
  4. Сохранить изменения файла

Пример

  • Имя файла - abc.cfg
  • Содержит следующие строки

network;private;Temp;Windows;System32

Я использовал следующую команду SED для операции

sed -i -e "/Temp;/d" abc.cfg

Вывод не соответствует ожидаемому. Полная строка удаляется вместо слова Temp;

Любая помощь будет принята с благодарностью. Спасибо

Ответы [ 2 ]

1 голос
/ 01 июля 2019

sed совпадает со строками, а /d - это директива удаления, поэтому вы получаете удаленную строку.Вместо этого используйте замену, чтобы заменить слово-нарушитель ничем:

sed 's/Temp;//g' abc.cfg

Модификатор /g означает «глобальный», если слово-нарушитель появляется более одного раза.Я бы удерживал флаг -i (встроенный) до тех пор, пока вы не будете уверены в своей команде вообще или не используете -i .backup.

0 голосов
/ 02 июля 2019

Спасибо. Я использовал ваше предложение, но не смог дозвониться. Я ценю вклад, хотя.

Я смог добиться этого, используя следующий синтаксис SED

sed -e "s / Temp // g" -i.backup abc.cfg

Я хотел сделать резервную копию до изменения, и поэтому -i был полезен.

...