sed inline editing не работает для нескольких операторов sed

Я хочу добавить #SB# в начале каждой строки, где она соответствует заданной строке

incron.sh

 sed -i -e'/test1/s/^/#SB#/g' file1 sed -i -e'/test2/s/^/#SB#/g' file1 sed -i -e'/test4/s/^/#SB#/g' file1 

file1

 /apps/pmserver $ cat file1 00 45 /ser/bat/ab.sh test1 00 45 /ser/bat/ab.sh test2 00 45 /ser/bat/ab.sh test3 00 45 /ser/bat/ab.sh test4 /apps/pmserver $ 

Я использую Korn Shell.

Я могу выполнить вывод в новый файл, но это не сработает, если в скрипте есть несколько sed как показано выше. Я получаю ошибку

 sed: Not a recognized flag: i 

То, что я пытаюсь сделать, это закомментировать несколько записей crontab принадлежащих определенной команде. test1 test2 … являются их именами файлов, и их необходимо отключить.

3 Solutions collect form web for “sed inline editing не работает для нескольких операторов sed”

Аргумент -i для sed – это расширение GNU. Вероятно, вы не используете GNU sed, поэтому вы получаете сообщение об ошибке -i которая не распознана.

Ваш sed не является GNU (возможно), поэтому -i для редактирования на месте не поддерживается. Вы можете избежать этого, используя временный файл:

 sed -i -e'/test1/s/^/#SB#/g' file1 

становится

 sed -e'/test1/s/^/#SB#/g' file1 > temp_file mv temp_file file1 

Конечно, вы можете сделать это лучше, используя mktemp, как это

 tmpfile=`mktemp`; sed -e '/test1/s/^/#SB#/g' file1 > $tmpfile; mv $tmpfile file1 

Абсолютно избежать sed и перенаправить без временного файла, так как ваш исходный файл будет усечен.

Вы можете использовать Vim в режиме Ex:

 ex -sc 'g/\vtest(1|2|4)/s/^/#SB#/' -cx file1 
  1. g глобальное регулярное выражение

  2. \v включить магию

  3. s заменить

  4. x сохранить и закрыть

  • Заменить диапазон текста специальными символами, используя sed
  • Как заменить строку строкой, содержащей слэш с sed?
  • Почему «1,4p» выводит все строки, а не только первые четыре?
  • Как заменить слово уникальным префиксом и суффикс?
  • Как команда sed '1! G; h; $! D' отбрасывает содержимое файла?
  • Как удалить <td> или </ td> с помощью sed?
  • Как урезать ссылку HTML?
  • в чем смысл этой команды sed? sed '# 012 / \ n / g'
  • Почему sed заменяет все вхождения, а не только первое вхождение?
  • что означает: g означает это действие?
  • Сед работает с двумя линиями
  • Interesting Posts

    Сменная строка, содержащая шаблон со следующей строкой

    Невозможно traceroute на Kali Linux

    systemd в эпоху hotplugable устройств

    Как заменить все подстрочные индексы UTF-8 с процентным кодированием на простой текст UTF-8?

    Удаленный доступ к консоли фреймбуфера моего компьютера с Android

    Где переменная окружения `$ TERM` установлена ​​в Debian Jessie для входа в консоль?

    Удалить строку, содержащую определенную строку, и следующую строку

    Emacs меняет шрифт одного слова (или предложения), а не всего буфера

    Какой пакет содержит утилиту / команду «cpupower» в Fedora 25 или 28 или в ОС Qubes?

    Когда я запускаю «sudo su», я получаю команду –bash: команда не найдена для всего

    Как добавить контрольную сумму MD5 содержимого электронной почты в bash?

    Скопировать-вставить между urxvt и abiword

    Есть ли проблема поместить / в качестве домашнего каталога пользователя root с точки зрения безопасности?

    Как я могу дистанционно разблокировать рабочую станцию ​​RHEL7?

    Использование sed для скобок

    Linux и Unix - лучшая ОС в мире.