Significado de /en_US.UTF-8/s/^# //

0

Eu vi isso no outro dia:

sed --in-place '/en_US.UTF-8/s/^# //' /etc/locale.gen

Eu entendo tudo, exceto o '/en_US.UTF-8/s/^# //' . Eu entendo en_US.UTF-8 , mas o que está ao redor dele. Parece RegEx.

    
por Karl Morrison 15.02.2018 / 14:09

2 respostas

4
sed                            # stream editor

--in-place                     # save changes to same filename

'/en_US.UTF-8/s/^# //'         # program/script for sed 

    /en_US.UTF-8/              # on any line that contains this text
    s/^# //                    # remove any initial 'comment' designator

/etc/locale.gen                # filename to be read then replaced

Por isso, descompacta a linha en_US.UTF-8 no arquivo locale.gen .

Existe uma página man para sed que explica isso. Há muitas introduções on-line para sed que cobririam isso.

    
por 15.02.2018 / 15:20
2

I understand it all except the '/en_US.UTF-8/s/^# //'

Supondo que isso esteja correto, está removendo o # e o espaço no início das linhas que contêm en_US.UTF-8 em algum lugar nelas.

Então, isso acontece, por exemplo:

# en_US.UTF-8 foo bar
# foo bar en_US.UTF-8

Para isso:

en_US.UTF-8 foo bar
foo bar en_US.UTF-8

Divisão:

  • ' ' - parte normal do comando sed .
  • /en_US.UTF-8/ - Procure linhas com en_US.UTF-8 nelas.
  • s - comando subtitute.
  • /^# / - expressão regular. Se a linha começar com # e um espaço ...
  • // - substituição em branco. Transforma # e espaço em ... nada (nenhum caractere - excluído!).
por 15.02.2018 / 15:24

Tags