нужна помощь с SED, чтобы опустить некоторые выражения

Ответ таков: ничего особенного не происходит. Вы заменяете свой процесс, execing -разветвленный процесс знает только, что его родительский pid равен 1, ему все равно, был ли этот процесс systemd или каким-то initramfs /init. Единственный сомнительный момент заключается в том, что это будет демон без службы systemd, поэтому ведение журнала, перезапуск и т. д. не будут работать должным образом --, если вы специально не создадите свою собственную службу, которая «прикрепляется» к разветвленному процессу (, вероятно. не очень сложно, учитывая, что он должен иметь детерминированный pid и т. д. ).

Обычно не рекомендуется оставлять -код initramfs работающим после обычной загрузки именно по этим причинам, но это не приведет к краху вашей системы. В полях комментариев кhttps://lwn.net/Articles/657345/есть интересные обсуждения, где это кратко обсуждается.

0
28.02.2020, 16:59
1 ответ

Вам нужны дополнительные анкеры.

  1. Начало и конец строки (, если каждая запись находится в строке)

    sed -E 's/^[0-9]{3}-[0-9]{2}-[0-9]{4}$/ /g' file
    
  2. Или границы слов (пробел -текстовые переходы)(GNU sed):

    sed -E 's/\<[0-9]{3}-[0-9]{2}-[0-9]{4}\>/ /g' file
    
  3. Или захватить (и вернуть )необязательный дополнительный символ. Но для этого необходимо, чтобы все совпадающие строки были окружены дополнительными символами.

    sed -E 's/([^0-9])[0-9]{3}-[0-9]{2}-[0-9]{4}([^0-9])/\1 \2/g' file
    
  4. Или (не в sed )используйте PCRE, которые позволяют смотреть вперед и смотреть назад.

    perl -pe '$_ =~ s/(?<!\d)\d{3}-\d{2}-\d{4}(?!\d)/ /g' file
    
0
28.04.2021, 23:21

Теги

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