shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] linhas múltiplas de 4


From: Guilherme Gall
Subject: Re: [shell-script] linhas múltiplas de 4
Date: Sat, 13 Dec 2008 20:26:43 -0200

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Seguindo a mesma idéia, só com builtins do bash:

$ cat script.sh
#/bin/bash

FLAG=0
while read LINHA; do
        if [[ $LINHA =~ '^email' && $FLAG -eq 1 ]]; then
                echo ${LINHA/email/email_alternativo}
                FLAG=0
        elif [[ $LINHA =~ '^email' ]]; then
                echo $LINHA
                FLAG=1
        else
                echo $LINHA
        fi
done < arquivo_original.txt

$ ./script.sh

Nome: Nair
Sobrenome: Silveira
email: address@hidden
email_alternativo: address@hidden

Nome: Carlos
Sobrenome: Martin
email: address@hidden
email_alternativo: address@hidden

Nome: Lucia
Sobrenome: Andrade
email: address@hidden
email_alternativo: address@hidden

Essa solução manteve a estrutura do arquivo original e é interessante
por não usar nenhum comando externo.

- --
Guilherme Magalhães Gall (GMGall)
GPG Public Key ID: 0F498058


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: http://getfiregpg.org

iEYEARECAAYFAklEOEcACgkQZV3qXg9JgFiAogCfYp/zLPjRVFLL24CzfonPJTjY
d7oAoJ2rvr94I/O8phLv31zQp8cHXHZ+
=0pzF
-----END PGP SIGNATURE-----

2008/12/12 miranda <address@hidden>:
> Considerando que não existe a string email no e-mail do
> usuário , caso contrário é necessária uma pequena modificação
>
>  cat texto
> === linha em branco ===
> Nome: Nair
> Sobrenome: Silveira
> email: address@hidden
> email: address@hidden
> === linha em branco ===
> Nome: Carlos
> Sobrenome: Martin
> email: address@hidden
> email: address@hidden
> === linha em branco ===
> Nome: Lucia
> Sobrenome: Andrade
> email: address@hidden
> email: address@hidden
>
> [miranda@guitar ~]$ cat awk.cmd
> BEGIN{FLAG=1;}
> $0 !~ /email/ {print}
> $0 ~ /email/ && FLAG == 1 {print;FLAG=0;next}
> $0 ~ /email/ && FLAG == 0 {sub("email",
> "email_alternativo");print;FLAG=1}
>
> [miranda@guitar ~]$ awk -f awk.cmd texto
> === linha em branco ===
> Nome: Nair
> Sobrenome: Silveira
> email: address@hidden
> email_alternativo: address@hidden
> === linha em branco ===
> Nome: Carlos
> Sobrenome: Martin
> email: address@hidden
> email_alternativo: address@hidden
> === linha em branco ===
> Nome: Lucia
> Sobrenome: Andrade
> email: address@hidden
> email_alternativo: address@hidden
>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]