pt pergunta: o que significa “s / quiet init =. * $ //”?

0

Estou tendo problemas para entender o comando abaixo. Eu entendo o argumento -i significa 'inserir' e o último argumento obviamente referencia o arquivo a ser alterado, mas alguém poderia explicar o segundo argumento - s/ quiet init=.*$//

sed -i 's/ quiet init=.*$//' /boot/cmdline.txt

O arquivo /boot/cmdline.txt se parece com isto:

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet  init=/usr/lib/raspi-config/init_resize.sh
    
por Ctrp 07.08.2016 / 19:24

2 respostas

3

-i para sed do GNU na verdade significa modificar o arquivo no local, não "inserir"

o resto é o script sed s significa que vamos fazer uma substituição, então o primeiro / marca o início do regex até o próximo / , então nesse caso o padrão é quiet init=.*$ que encontrará a string quiet init= e tudo de lá até o final da linha. A próxima parte é o que substituir pela expressão correspondente, no nosso caso é uma string vazia, então nós efetivamente deletamos essa parte da linha

    
por 07.08.2016 / 19:33
1

Parece que você confundiu as opções de linha de comando sed com os próprios comandos.

Uma opção modifica o comportamento padrão de sed e o (s) comando (s) sed determina a manipulação que você deseja fazer com sed .

-i no seu caso está no local de edição, o que significa fazer as alterações permanentemente gravadas no arquivo em questão, então você está alterando o arquivo

Não confunda isso com o comando i , que é usado para inserir uma linha em um local desejado. Por exemplo

sed -i '1,i\header' file # i inside single quotes is command

adiciona a linha header à primeira linha do arquivo.

O s no seu caso é o comando de substituição, cujo formato geral é

s/pattern/substition/flag

Consulte [sed manual] para obter mais detalhes.

    
por 07.08.2016 / 19:41

Tags