Использование sed для замены строки со специальными символами другой строкой со специальными символами

Нет большой разницы в выборе "ДА" или "НЕТ" для установки ГРУБА в MBR. Но если вы новичок в linux или двойная загрузка, есть большая вероятность, что вы сломаете установку linux.

Если вы продолжили установку GRUB в MBR и прервали установку linux, вы не сможете загрузиться и в windows, поэтому застрянете здесь. А если вы выбрали NO для установки GRUB и прервали установку linux, вы все равно сможете использовать свою операционную систему windows.

Хотя вы можете восстановить вашу ГРУБку с помощью загрузочного носителя linux или отремонтировать запуск windows в случае, если вы не можете использовать windows. Но это было бы несколько раздражающе.

1
09.03.2019, 20:46
1 ответ

Вот несколько подходов (хорошо, 2½):

  • , Если вы интересуетесь способностью для инкрементного изменения PS1 параметров настройки, следующих за общим шаблоном,

    • Создайте файл, содержащий только строку PS1 =... .
    • Напишите команды sed для редактирования, поштучно; например,
      • sed -e/$ {debian _ chroot: + ($ debian _ chroot) }/\\d\\t/'
      • sed -e 's/\\033/\\e/g'
      • и т.д.
    • Вам может быть проще отладить эти более мелкие и простые команды. Когда вы заставили их работать, это должно быть просто сшить их вместе.
    • Вы просмотрели значение $ original ? Например, вы сделали
      printf «% s\n» «$ original»
      ? Помните, когда вы говорите что-то вроде

       «Быстрая коричневая лиса» перепрыгивает над «ленивой собакой.»
      

      Весь ряд состоит из двойных кавычек. Так что, когда вы говорите

       «Горбатый '$ var' Dumpty»
      

      $ var расширяется, потому что он состоит из двойных кавычек.

      Теперь посмотрите на свой оригинал последовательности:

       original = «PS1 = '$ {debian _ chroot: + ($ debian _ chroot) }\[\033 [01; 31 m\]\u @\h\[\033 [00 m\]:»...
      

      $ {debian _ chroot: + ($ debian _ chroot)} расширяется когда вы делаете это задание. Так что это проблема.

  • Если требуется изменить PS1 на новое значение, независимо от того, что уже есть, не пытайтесь долбить статую лисы а затем добавить глину в надежде создать статую собаки; просто сдуть существующее задание и заменить его, используя команду sed "s c ( c hange), которая заменяет одну группу из одной или нескольких строк с другой группой из одной или нескольких строк:

     sed -e $ '/^ PS1 =/c\
    IPeth0 = $ (Adr = $ (ifconfig eth0 | grep inet); echo $ Adr | awk\' {print $2 }\' | cut -c 6-)\
    PS1 =\'\d\t\[\e [0; 31 m\]\u @ $ IPeth0\[\e [0; 32 m\] :\[\e [0; 36 m\]\w #\[\e [m\]\"
    

    Я поместил всю командную строку sed в $ '...' Поэтому я мог бы использовать \' , чтобы получить необработанные ' символы в последовательность. При желании можно использовать пробную и истинную

     '$ not _ a _ variable...'... " пожалуйста, не пытайтесь расширить эти «...»... $ not _ a _ variable '
    

    (чередование цитат).

  • Вариант по вышеуказанному -

     sed $ '/^ PS1 =/{ s/^/#/; a\
    IPeth0 = $ (Adr = $ (ifconfig eth0 | grep inet); echo $ Adr | awk\' {print $2 }\' | cut -c 6-)\
    PS1 =\'\d\t\[\e [0; 31 m\]\u @ $ IPeth0\[\e [0; 32 m\] :\[\e [0; 36 m\]\w #\[\e [m\]\'
    }'
    

    , который комментирует существующее определение ( s/^/#/) и a отправляет новые строки с помощью команды a .

1
27.01.2020, 23:50

Теги

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