[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] dúvida sed, inserção em /etc/passwd
From: |
Mauricio Vieira |
Subject: |
Re: [shell-script] dúvida sed, inserção em /etc/passwd |
Date: |
Sat, 29 Jun 2002 04:07:46 -0300 |
User-agent: |
Mutt/1.2.5i |
Saudacoes,
Cara, não funcionou nenhuma das duas.
O \n não é reconhecido como quebra de linha e quando eu quebro a linha pra
terminar o comando,
o sed dá uma msg de comando 's' não terminado:
mvieira@vonneumann:/home$ cat /etc/aliases | sed 's/\(^#MATRICULAS.*$\)/\1
fadsfa:Dasfaf/'
sed: -e expression #1, char 26: Unterminated `s' command
Tenho
mvieira@vonneumann:/home$ cat /etc/aliases | grep -A4 -B4 "#MATRICULAS"
security: root
mailer-daemon: postmaster
#MATRICULAS - NÃO APAGUE!!
992007950: vieira
# adicionado por Antonio Terceiro, em Thu Jun 6 20:35:10 BRT 2002.
E cat /etc/aliases | sed "s/\(^#MATRICULAS.*$\)/\1\n992001903:fulano/"
#MATRICULAS - NÃO APAGUE!!n992001903:fulano
992007950: vieira
Ou seja, ele anexa no fim da frase.
mvieira@vonneumann:/home$ sed --version
GNU sed version 3.02
Copyright (C) 1998 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.
Consultei http://verde666.org/sed/sed-HOWTO/sed-HOWTO-7.html#ss7.1
Ainda não sei como usar hold space pra fazer isto. Tava fzendo umas
tentativas aqui, mas
sempre sai algo inesperado.
E a solução com b e t deu uma coisa estranha. ele adicionou 2 vezes, mas não
incluiu as linhas
mvieira@vonneumann:/home$ cat /etc/aliases | sed -e
'/\(^#MATRICULAS.*$\)/h;x;/\(^$\|\n\n\)/bnext;x;H;s/^$/novo:nome\n/;bfim;:next;x;/^$/h;:fim'
| grep -A4 -B4 "#MATRICULAS"
security: root
mailer-daemon: postmaster
#MATRICULAS - NÃO APAGUE!!
992007950: vieira
novo:nomen
novo:nomen
# adicionado por Antonio Terceiro, em Thu Jun 6 20:35:10 BRT 2002.
Ou seja, ele apenas substituiu as linhas em branco 2 vezes pelo novo:nome (o
nomen é pq não
entende \n como quebra de linha)
Obrigado pela tentativa, mas ainda alguma ajuda é interessante. Obrigado.
Em Fri, 28 Jun 2002, Mauricio Vieira escreveu:
> Saudacoes,
>
> Genial, na verdade eu saberia isto. Me desculpe a preguiça mental =)
>
> > cat aliases |sed -e 's/\(\#Aliases das matriculas\)/\1\nnovo:nome/'
>
> Sobre a outra solução + complicada, vou dar uma lida pra entender o q
> significa o /b x e H
>
> Valeu.
> Em Fri, 28 Jun 2002, Ulysses Almeida escreveu:
>
> >
> > cat aliases |sed -e '/^#Aliases das
> > matriculas/h;x;/\(^$\|\n\n\)/bnext;x;H;s/^$/novo:nome\n/;bfim;:next;x;/^$/h;:fim'
> >