[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] sed não obedece primeira linha em branco
From: |
Tiago Barcellos Peczenyj |
Subject: |
Re: [shell-script] sed não obedece primeira linha em branco |
Date: |
Tue, 25 Jul 2006 11:49:39 -0300 |
O sed é orientado `linhas, logo ele faz o que vc quer, porém não
'para' na primeira linha. Pesquisei a respeito e a unica maneira q
vejo é trocar o caracter 'novalinha' por outro caracter, o que deixa a
linha de comando muito suja e suceptivel a erros.
Vc pode usar AWK
awk '/^$/{if(!foi){ printf "xxx"; foi=1} }{print}' arquivo
nesse caso, foi é uma variavel que devido a natureza interpretada do
AWK, é inicializada com zero - que para o if é um valor Falso.
convertemos em Verdadeiro com um ! e, na primera ocorrencia, trocamos
de valor. assim na primeira ocorrencia de ^$ é impresso xxx, nas
outras não cai dentro do if.
o {print} é o padrão, imprime todas as linhas
On 7/25/06, Reinaldo Carvalho <address@hidden> wrote:
Olá amigos, a 4 dias postei na sed-br, mas não obtive sucesso, alguém
pode me ajudar nessa? To usando isso dentro de um shell-script, apenas
to mostrando a idéia do meu problema. O sed deveria fazer somente uma
vez.
$ cat arq.txt
teste 09:09
-- teste 09:09
teste 09:09
$ sed -e '/^$/ixxxx' arq.txt
xxxx
teste 09:09
xxxx
-- teste 09:09
xxxx
teste 09:09
xxxx
$ sed -e 's/^$/xxxx\n/' arq.txt
xxxx
teste 09:09
xxxx
-- teste 09:09
xxxx
teste 09:09
xxxx
$ cat arq.txt
teste 09:09
-- teste 09:09
teste 09:09
Porque ele não esta fazer só uma vez? Afinal, não usei /g para ser global.
Preciso inserir uma linha somente antes da primeira linha em branco.
sed --version
GNU sed version 4.1.2
Copyright (C) 2003 Free Software Foundation, Inc.
debian sarge
md5sum /bin/sed
45db1533ad0509bada6c42348912dd47 /bin/sed
--
Reinaldo Carvalho
Debian Sarge 3.1 - Linux User: #238310
Prodepa - address@hidden
---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil
Links do Yahoo! Grupos
--
Tiago B Peczenyj
Linux User #405772
# cd /pub
# more beer