Você pode ordenar suas mensagens por data? Basta clicar no link da coluna data. Suas preferências serão lembradas para que você não precise fazer isso novamente sempre que retornar.
> Eliphas Levy Theodoro - Conectiva
> echo "explorer, notepad e outlook" | \
> sed 's/e.*r/lynx/;s/no.*d/vi/;s/o.*/pine/' | \
tem um jeito mais fácil &:)
echo 'explorer, notepad e outlook' | \
sed "s/\<[a-z]*\>\([^a-z]*\)\<[a-z]*\>\([^a-d,f-z]*\)\<[a-z]*\>/lynx\1vi\2pine/"
--
s/&:(/&>(/g,aurelio@...
http://www.conectiva.com.br/~aurelio
"indignação_movendo_a_nação"<ESC>:wq
Date: Sat, 18 Sep 1999 01:54:55 -0500
From: Eric Pement <epement@...>
(Copied from my web page, but some of you might like to know this.
If you have wordwrap ON in your mail reader, turn it OFF.)
===========================================================================
A Table of Differences among six DOS versions of SED
===========================================================================
GNU sed GNU GNU GNU HHsed sedmod
This version of sed supports . . . . 3.02.80 3.02 2.05 1.03 1.5 1.0
---------------------------------------------------------------------------
Win95 long filenames Y Y Y Y Y[1] N
newlines in s/find/rep/ text via \n Y N N Y Y Y
represent tabs by \t Y N N Y Y Y
"a append-on-same-line" (a,i,c cmds) Y N N N Y Y
interval expressions like \{m,n\} Y Y Y N Y[2] N
ignore case /flag/i or switch (-i) Y Y N N N Y
hex code entry via \xHH Y N N Y Y N
unlimited line length or buffer size Y Y Y 64K 4K 4K
numeric arg flags in s/ubsti/tution/5 Y Y Y Y Y N
OR searches with \| Y Y Y Y N N
periodic line matching with M~N Y Y Y N N N
word arguments with $1, $2, ... $8, $9 N N N N N Y
case change with \L,\l, \U,\u, \E,\e N N N N N Y
can run in MS-DOS mode, outside Windows Y Y N N Y[3] Y
===========================================================================
Notes:
(1) File SED15X.ZIP does not support Win95 long filenames. However, a
version of SED15.EXE compiled with Mingw32 does support long filenames
and is available at http://www.cornerstonemag.com/sed/
(2) Interval range of \{0,n\} not supported in sed15.
(3) sed15 will run in MS-DOS mode; the version compiled with Mingw32
will not.
---------------
After reading this table, let's hear it for GNU sed v3.02.80!
Just a few more steps, and it will have Y's down the first row.
Wonder if \L, \l, \U, \u, and similar switches in the right side
of an s/// command are that hard to implement? The code could be
borrowed from sedmod, which comes with open source GPL license.
--
Eric Pement <epement@...>
senior editor, Cornerstone magazine
sed FAQ file: http://www.cornerstonemag.com/sed/sedfaq.html
sed 1-liners: http://www.cornerstonemag.com/sed/sed1line.txt
Me inscrevi na lista esses dias, e nao tenho o minimo de experiencia com o
sed (nada alem de um sed s/velho/novo/). :)
Tenho duas perguntas:
1. O Sed pode ser utilizado pra substituir o awk? Alem deste, quais outros
utilitario do shell seriam "englobados" pelo sed?
2. Nem procurei, mas vou perguntar assim mesmo: Vcs podem me passar
algumas urls sobre o sed? Tipo um "sed-lovers" ou coisa assim? Alem de
URLs, existem tutoriais ou coisas do tipo pra quem pretende estudar
expressoes regulares?
3. (Ops, eram soh duas :D) Essa lista tah viva? :P
[]'s
==============================================
Ademar de Souza Reis Jr.
http://members.xoom.com/ademarjr
Estudante de Informatica / Bolsista PET - UFPR
Happy Linux Home User #71790
ademar@...
Curitiba - PR - Brasil
--
"Se NT é a resposta, você não entendeu a pergunta"
@ 2/10, Ademar de Souza Reis Jr.:
> Me inscrevi na lista esses dias, e nao tenho o minimo de experiencia com o
> sed (nada alem de um sed s/velho/novo/). :)
olá ademar,
mas estamos aqui pra isso mesmo, aprender &:)
> 1. O Sed pode ser utilizado pra substituir o awk? Alem deste, quais outros
> utilitario do shell seriam "englobados" pelo sed?
sim e não.
o sed é poderosíssimo na manipulação de texto, mas o awk tem
funções que o sed não tem, pois o awk é uma linguagem de
programação, e tem estruturas como condicional (if then
else) e variáveis, entre outros.
mas se você não usa condicionais no awk, o sed o substitui
perfeitamente.
utilitários englobados? não seria bem isso, mas com o sed
você consegue "emular" algumas (ou todas) as funcionalidades
de:
- cat
- tac
- cut
- rev
- grep
- egrep
- fmt
- ed
e provavelmente mais algum que eu não lembro agora &:)
alguns desses estão demostrados no FAQ do sed.
> 2. Nem procurei, mas vou perguntar assim mesmo: Vcs podem me passar
> algumas urls sobre o sed? Tipo um "sed-lovers" ou coisa assim? Alem de
> URLs, existem tutoriais ou coisas do tipo pra quem pretende estudar
> expressoes regulares?
http://homepage.cis.nctu.edu.tw/~gis84806/sedhttp://www.dreamwvr.com/sed-info/sed-faq.htmlhttp://www.cornerstonemag.com/sed/sedfaq.htmlhttp://www.wollery.demon.co.uk
para expressões regulares, eu recomendo a bíblia:
"Mastering Regular Expressions" do jeffrey e. f. friedl,
distribuído pela o'reily.
e esses dias li um HOWTO muito bom, é para expressões
regulares em python, mas também explica os conceitos
básicos:
http://python.org/doc/howto/regex
> 3. (Ops, eram soh duas :D) Essa lista tah viva? :P
está!
só falta mais quórum para ficar mais movimentada &:)
--
s/&:(/&>(/g,aurelio@...
http://www.conectiva.com.br/~aurelio
"indignação_movendo_a_nação"<ESC>:wq
Estou tentando alterar umas expressoes em tags html/sgml
preciso trocar <algumacoisa> por BLA , sendo que alguma coisa é <A
HREF=" ">
e dentro das aspas tem várias coisas diferentes.
HELP Please!!
Ricardo Soares Guimarães
mailto:ricardo@...
http://www.universolinux.com.br
"A certeza de que vou morrer é a maior dádiva que recebi. Porque assim,
eu sou obrigado a aproveitar cada segundo de minha vida."
> Estou tentando alterar umas expressoes em tags html/sgml
>
> preciso trocar <algumacoisa> por BLA , sendo que alguma coisa é <A
> HREF=" ">
> e dentro das aspas tem várias coisas diferentes.
>
> HELP Please!!
se entendi direito, você excluir todas as tags html, então
basta um
s§<[^>]*>§BLA§g
se for exclusivamente os "a href",
s§<a href=[^>]*>§BLA§g
--
s/&:(/&>(/g,aurelio@...
http://www.conectiva.com.br/~aurelio
"indignação_movendo_a_nação"<ESC>:wq
Hoje, às 09:23, Ricardo escreveu:
> Estou tentando alterar umas expressoes em tags html/sgml
>
> preciso trocar <algumacoisa> por BLA , sendo que alguma coisa é <A
> HREF=" ">
> e dentro das aspas tem várias coisas diferentes.
>
> HELP Please!!
trocando em linguagem sed, você quer procurar algo que comece por:
<A HREF="
tenha caracteres diferentes de aspas
e termine com:
">
Vamos lá...
cat arquivo.html | \
sed 's/<A HREF="[^"]*">/BLA/g'
explicando.
sed < nome do mágico ;P
s/ < substituir
<A HREF=" < a parte que não vai mudar
[^"]*"> < qualquer letra que NÃO for aspas, e que termine por ">
/BLA/g < substituir essas coisas por BLA em todas as ocorrências
voilá.
--
Conectiva - Theodoro, Eliphas Levy | \
sed 's/\([A-z]*\) - \([A-z]*,\) \([A-z]*\) \([A-z]*\)/\3 \4 \2 \1/'
Você moveu seu mouse. Reinicie para que as alterações tenham efeito.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCM/U d--- s:- a23 C+++ UL+++$ P+>$ L++> E--- W- N- !o !K w--- O- M- V?
PS+ PE Y-- PGP t+ 5+ X+ R+ tv- b DI+ D+++ G e-- h+ r- y+
------END GEEK CODE BLOCK------
Hi All.
Comecei a usar o centerICQ (cliente ICQ pra console textual), mas queria
converter todos os meus UINs jah existentes do Licq pro arquivo de
contacts do centerICQ.
Fiz o seguinte script, mas tenho certeza que isso podia ser feito via sed
ou sei lah oq...
# inicio
> ~/.center/contactlist
for i in *.uin
do
a=`grep Alias "$i" | cut -d " " -f 3`
b=`echo $i | cut -d . -f 1 | grep [0-9]`
echo -n $a >> ~/.center/contactlist
echo -e \\t \\t $b >> ~/.center/contactlist
done
# fim
Sendo que os arquivos .uin tem como *nome* o numero (UIN) da pessoa e
dentro do arquivo o nick fica em uma linha como:
Alias = Ademar
A saida eh algo do tipo:
Nick1 xxxxxxxx
Nick2 xxxxxxxx
.
.
.
Onde xxxxx eh o UIN.
Meu script funciona (com excessao de que em alguns nicks fica um TAB a
mais do que nos outros).
Alguem tem a solucao em uma linha apenas? :)
[]'s
==============================================
Ademar de Souza Reis Jr.
http://members.xoom.com/ademarjr
Estudante de Informatica / Bolsista PET - UFPR
Happy Linux Home User #71790
ademar@...
Curitiba - PR - Brasil
--
"The nice thing about Windows is - It does not just crash, it displays a
dialog box and lets you press 'OK' first."
@ 12/10, Ademar de Souza Reis Jr.:
> Comecei a usar o centerICQ (cliente ICQ pra console textual), mas queria
> converter todos os meus UINs jah existentes do Licq pro arquivo de
> contacts do centerICQ.
>
> Fiz o seguinte script, mas tenho certeza que isso podia ser feito via sed
> ou sei lah oq...
>
> # inicio
> > ~/.center/contactlist
> for i in *.uin
> do
> a=`grep Alias "$i" | cut -d " " -f 3`
> b=`echo $i | cut -d . -f 1 | grep [0-9]`
> echo -n $a >> ~/.center/contactlist
> echo -e \\t \\t $b >> ~/.center/contactlist
> done
> # fim
como somente com o sed não é possível obter o nome do
arquivo via comandos para colocá-lo dentro do roteiro sed,
tem-se que usa o for de qualquer jeito.
for i in *.uin
do sed -n "s§Alias = \(.*\)§\1 $i§p" >> ~/.center/contactlist
done
* a opção -n suprime a saída padrão, então a não ser que
tenha um comando p no sed, nada será impresso na saída.
* o caractere § é o delimitador do s§isso§aquilo§
* com o \(.*\) vc joga no buffer 1 o nick da pessoa
* com o \1 você obtém o conteúdo do registrador 1
* mais 2 TABs literais (não lembro de dá pra por um \t
aqui...)
* e o nome do arquivo
não testei, mas deve funcionar
caso no 'Alias = ' possam ter vários espaços ou ainda TABs,
basta por um 'Alias\s\+=\s\+' sendo o \s um caractere branco
(espaço, TAB, etc) e o \+ pelo menos 1 ocorrência da
entidade anterior.
> Sendo que os arquivos .uin tem como *nome* o numero (UIN) da pessoa e
> dentro do arquivo o nick fica em uma linha como:
>
> Alias = Ademar
>
> A saida eh algo do tipo:
>
> Nick1 xxxxxxxx
> Nick2 xxxxxxxx
> .
> .
> .
>
> Onde xxxxx eh o UIN.
>
> Meu script funciona (com excessao de que em alguns nicks fica um TAB a
> mais do que nos outros).
isso é por que sempre são 2 TABs e os nicks são de tamanhos
diferentes
> Alguem tem a solucao em uma linha apenas? :)
3 tá bom? &:)
--
s/&:(/&>(/g,aurelio@...
http://www.conectiva.com.br/~aurelio
"indignação_movendo_a_nação"<ESC>:wq
ontem fiz um carinha para mostrar os links de um sítio de
internet local. pode ser útil para quem desenvolve em html.
e é útil pra quem quer aprender sed também pois é simples.
a cópia original está em
http://www.conectiva.com.br/~aurelio/programas/bash
#!/bin/sh
# showlink
# 19991012 <aurelio@...> ** 1a versão
#
# a bash+find+egrep+sed utility to webdesigners.
# showlink shows all kind of links on a web site.
# it gets all *html pages above the current dir.
# you can parse its output to find lost links, do
# statistics, find errors, or just for curiosity &:)
#
# a quick example:
# cp showlink /bin ; cd /home/httpd/html ; showlink -a
Usage(){ echo "$0 OPTION (just one option)
-a,--all all links found
-c,--chk check for incorrect links
-d,--dir links that point to directories
-e,--email links that point do emails (mailto:)
-f,--ftp links that point do external pages (ftp://)
-h,--http links that point do external pages (http://)
-i,--image links that point do images
-m,--music links that point do music files
-p,--page links on the same page
-z,--zzz links marked with ??? (todo link)
--help this help
UPPERCASE single option (-[ACDEFHIMPZ]) give the output without the
filename. i.e. \"`basename $0` -A\"
" ; exit 1
}
[ "$1" ] || Usage
OPT=$1
### the defaults for full output - do NOT edit!
# the delimiter beetween the filename and the link found
D=':'
# options passed to the egrep command. this is related to
# case of the option passed on the command line. lowercase
# is the default: show filename (H option). uppercase
# supresses it.
EGREP_OPTS='-His'
# the egrep pattern is only 'href=' and not '<a[^I ]\+href='
# or something to support multiline like <a
# href="link.html", and also, the "" are not included to you
# see when you missed them on the html source (all the line
# will appear on the output).
EGREP_PATT='href='
# this filter parses the egrep output to only extract the
# link itself: the string beetween the "".
EGREP_FILTER="s§\(^[^:]*\):.*href=\"[ ]*\([^ \"]*\)[ ]*\".*§\1$D\2§"
# this filter is the action related to the option passed on
# the command line. here is the "sedmagic". 'p' is the default,
# and show all links. the true magics are on the 'case' below.
SEDMAGIC='p'
# let's see if we have a UPPER option and set the filters to it
OPT2=`echo ${OPT#-} | sed 'y/ACDEFHIMPZ/acdefhimpz/'`
if [ "${OPT#-}" != "$OPT2" ]
then OPT=-$OPT2
D='^'
EGREP_OPTS='-is'
EGREP_FILTER="s§^.*href=\"[ ]*\([^ \"]*\)[ ]*\".*§\1§"
fi
# sedmagics here!
case $OPT in
-a|--all ) : ;; # it uses the defaults
-c|--chk ) SEDMAGIC="\§${D}/[^/]§p" ;; # TODO: more checks
-d|--dir ) SEDMAGIC="\§${D}[^.#]\+$§p" ;;
-e|--email) SEDMAGIC="\§${D}mailto:§p" ;;
-f|--ftp ) SEDMAGIC="\§${D}ftp://§p" ;;
-h|--http ) SEDMAGIC="\§${D}http://§p" ;;
-i|--image) SEDMAGIC='\§\.\(jpg\|gif\|png\|bmp\)$§p';;
-m|--music) SEDMAGIC='\§\.\(ra\|rm\|mp3\|wav\)$§p' ;;
-p|--page ) SEDMAGIC='\§#§p' ;;
-z|--zero ) SEDMAGIC='\§???§p' ;;
*) Usage ;;
esac
FILES=`find . -type f -name "*html"`
# and after all this preparations, the brain is here
# ah! no support for spaced filenames, but who cares?
for F in $FILES
do egrep $EGREP_OPTS $EGREP_PATT $F |
sed "$EGREP_FILTER" |
sed -n "$SEDMAGIC"
done
--
s/&:(/&>(/g,aurelio@...
http://www.conectiva.com.br/~aurelio
"indignação_movendo_a_nação"<ESC>:wq
Em 12/10/99 às 23:38, Ademar de Souza Reis Jr. escreveu:
> Hi All.
êrba. ':)
> Comecei a usar o centerICQ (cliente ICQ pra console textual), mas queria
> converter todos os meus UINs jah existentes do Licq pro arquivo de
> contacts do centerICQ.
>
> Fiz o seguinte script, mas tenho certeza que isso podia ser feito via sed
> ou sei lah oq...
bom, aproveitando, também fiz um pra conversão licq -> zicq:
licq2zicq.sh:
------------------8<======================================
#!/bin/sh
LICQ_DIR=~/.licq/conf
ZICQ_RC=~/.zicqrc
cd $LICQ_DIR
for uin in [0-9]*;do
echo -n $uin
grep -i alias $uin
done | \
sed 's/\([0-9]*\).*= \(.*\)/\1 \2/ ; s/^I/_/g' | \
sort -n >> $ZICQ_RC
==================>8--------------------------------------
ou seja, busca no diretório do licq todos os arquivos começando com números;
acha a linha 'alias' dentro de cada um deles;
forma a linha 'UIN alias= nome';
joga isso tudo em um único sed;
ele separa os números (uin) no início, e o nome após o igual;
também retira os espaços e substitui por sublinhas;
substitui todos os tabs por espaços;
no final, ordena pelo UIN e joga no final do .zicqrc.
só lembre-se de trocar o ^I acima por um TAB verdadeiro. (no vi, ^VTAB)
pra fazer pro centericq, deve ser preciso mudar pouca coisa.
--
Conectiva - Theodoro, Eliphas Levy | \
sed 's/\([A-z]*\) - \([A-z]*,\) \([A-z]*\) \([A-z]*\)/\3 \4 \2 \1/'
Você moveu seu mouse. Reinicie para que as alterações tenham efeito.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCM/U d--- s:- a23 C+++ UL+++$ P+>$ L++> E--- W- N- !o !K w--- O- M- V?
PS+ PE Y-- PGP t+ 5+ X+ R+ tv- b DI+ D+++ G e-- h+ r- y+
------END GEEK CODE BLOCK------
Em 13/10/99 às 10:09, aurelio marinho jargas - ctba escreveu:
>
> @ 12/10, Ademar de Souza Reis Jr.:
> > Comecei a usar o centerICQ (cliente ICQ pra console textual), mas queria
> > converter todos os meus UINs jah existentes do Licq pro arquivo de
> > contacts do centerICQ.
> >
> > Fiz o seguinte script, mas tenho certeza que isso podia ser feito via sed
> > ou sei lah oq...
> >
> > # inicio
> > > ~/.center/contactlist
> > for i in *.uin
> > do
> > a=`grep Alias "$i" | cut -d " " -f 3`
> > b=`echo $i | cut -d . -f 1 | grep [0-9]`
> > echo -n $a >> ~/.center/contactlist
> > echo -e \\t \\t $b >> ~/.center/contactlist
> > done
> > # fim
>
> como somente com o sed não é possível obter o nome do
> arquivo via comandos para colocá-lo dentro do roteiro sed,
> tem-se que usa o for de qualquer jeito.
>
> for i in *.uin
> do sed -n "s§Alias = \(.*\)§\1 $i§p" >> ~/.center/contactlist
> done
a linha do sed nao funcionou.
faltou colocar o nome do arquivo (no caso $i) antes do redirecionamento :)
devia ser:
do sed -n "s§Alias = \(.*\)§\1 $i§p" $i >> \
~/.center/contactlist
outro detalhe eh q aparece o .uin na linha de saida, eh isso tem q sair.
Saiu algo do tipo
Ademar xxxxx.uin
Nao tive tempo pra mexer nem pra entender direito oq isso faz, entao pode
ter algo de falta de atencao da minha parte :)
> * o caractere § é o delimitador do s§isso§aquilo§
Pergunta idiota:
De onde tiro o caractere "§" ?
Nao sei seh pq to com muuuito sono, mas nao to vendo ele aqui no meu
teclado :)
(us-acentos - sem teclas win95)
> > Alguem tem a solucao em uma linha apenas? :)
>
> 3 tá bom? &:)
Dah pra quebrar o galho :P
[]'s
==============================================
Ademar de Souza Reis Jr.
http://members.xoom.com/ademarjr
Estudante de Informatica / Bolsista PET - UFPR
Happy Linux Home User #71790
ademar@...
Curitiba - PR - Brasil
--
"Se NT é a resposta, você não entendeu a pergunta"
> > for i in *.uin
> > do sed -n "s§Alias = \(.*\)§\1 $i§p" >> ~/.center/contactlist
> > done
>
> a linha do sed nao funcionou.
>
> faltou colocar o nome do arquivo (no caso $i) antes do redirecionamento :)
é verdade. sempre me esqueço disso &:)
> do sed -n "s§Alias = \(.*\)§\1 $i§p" $i \
> ~/.center/contactlist
>
> outro detalhe eh q aparece o .uin na linha de saida, eh isso tem q sair.
> Saiu algo do tipo
> Ademar xxxxx.uin
>
> Nao tive tempo pra mexer nem pra entender direito oq isso faz, entao pode
> ter algo de falta de atencao da minha parte :)
não, é coloquei simplesmente $i, que é o nome do arquivo,
para tirar o .uin do final, basta por ${i%.uin}, então fica
do sed -n "s§Alias = \(.*\)§\1 ${i%.uin}§p" $i \
~/.center/contactlist
> > * o caractere § é o delimitador do s§isso§aquilo§
> Pergunta idiota:
> De onde tiro o caractere "§" ?
Alt da direita + =
> > > Alguem tem a solucao em uma linha apenas? :)
> > 3 tá bom? &:)
> Dah pra quebrar o galho :P
&:)
--
s/&:(/&>(/g,aurelio@...
http://www.conectiva.com.br/~aurelio
"indignação_movendo_a_nação"<ESC>:wq
Preciso recuperar por exemplo a linha 10 de um arquivo como faço?
Ricardo Soares Guimarães
mailto:ricardo@...
mailto:ricardo@...
http://www.universolinux.com.brhttp://www.opensystem.org.br
"A certeza de que vou morrer é a maior dádiva que recebi. Porque assim,
eu sou obrigado a aproveitar cada segundo de minha vida."
da próxima vez, faça um assunto mais descritivo para
facilitar uma busca no histórico
> Preciso recuperar por exemplo a linha 10 de um arquivo como faço?
há 2 maneiras:
sed -n 10p # corta a saída padrão e imprime o padrão
sed 10!d # corta tudo menos o padrão
1º caso:
-------
-n suprime a saída padrão, só o comando p imprimirá algo
10p o p imprime e aceita um endereçamento (no caso a linha 10)
esse endereçamento pode ser
10 somente a linha 10
1,10 da linha 1 a 10
/padrão/,10 da 1ª linha que tiver "padrão" até a 10
2ª caso:
-------
10 endereçamento
! não faça o comando seguinte (negação)
d apague a linha corrente
então fica, "na linha 10, não apague", ou melhor
"fora a linha 10, apague"
--
s/&:(/&>(/g,aurelio@...
http://www.conectiva.com.br/~aurelio
"indignação_movendo_a_nação"<ESC>:wq
Em 14/10/99 às 12:06, aurelio marinho jargas - ctba escreveu:
> 1º caso:
> -------
> -n suprime a saída padrão, só o comando p imprimirá algo
> 10p o p imprime e aceita um endereçamento (no caso a linha 10)
>
> esse endereçamento pode ser
>
> 10 somente a linha 10
> 1,10 da linha 1 a 10
> /padrão/,10 da 1ª linha que tiver "padrão" até a 10
só complementando, pode ser também por 'passos', ou seja:
1~2 imprime somente as linhas ímpares, começando na primeira;
10~10 imprime a décima, vigésima, etc...
5~20 vai imprimir a quinta, a vigésima quinta, a quadragésima quinta...
nessa parte de 'steps', tá até bem explicadinho no 'man sed'. ':)
--
Conectiva - Theodoro, Eliphas Levy | \
sed 's/\([A-z]*\) - \([A-z]*,\) \([A-z]*\) \([A-z]*\)/\3 \4 \2 \1/'
Você moveu seu mouse. Reinicie para que as alterações tenham efeito.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCM/U d--- s:- a23 C+++ UL+++$ P+>$ L++> E--- W- N- !o !K w--- O- M- V?
PS+ PE Y-- PGP t+ 5+ X+ R+ tv- b DI+ D+++ G e-- h+ r- y+
------END GEEK CODE BLOCK------
Taih uma coisa q eu ateh hoje nao descobri como se faz....
Tudo bem q nao eh relacionado diretamente ao sed, mas achei q era a melhor
lista pra se fazer esse tipo de pergunta.
Alguem tem a solucao? Se possivel, como direcionar ambos (saida e erro
padrao) prum pipe?
Tipo
gcc -foo.c -o bar | grep xxxx
[]'s
==============================================
Ademar de Souza Reis Jr.
http://members.xoom.com/ademarjr
Estudante de Informatica / Bolsista PET - UFPR
Happy Linux Home User #71790
ademar@...
Curitiba - PR - Brasil
--
"Se NT é a resposta, você não entendeu a pergunta"
On Sat, 16 Oct 1999, Ademar de Souza Reis Jr. wrote:
>
> Taih uma coisa q eu ateh hoje nao descobri como se faz....
>
> Tudo bem q nao eh relacionado diretamente ao sed, mas achei q era a melhor
> lista pra se fazer esse tipo de pergunta.
>
> Alguem tem a solucao? Se possivel, como direcionar ambos (saida e erro
> padrao) prum pipe?
>
> Tipo
>
> gcc -foo.c -o bar | grep xxxx
>
gcc -foo.c -o bar | grep xxx 2>&1
assim a saida 2 (stderr) tambem vai para a saida 1 (stdout)
Wanderlei Antonio Cavassin
Conectiva
Hoje, às 00:12, Wanderlei Antonio Cavassin escreveu:
> On Sat, 16 Oct 1999, Ademar de Souza Reis Jr. wrote:
> >
> > Taih uma coisa q eu ateh hoje nao descobri como se faz....
> >
> > Tudo bem q nao eh relacionado diretamente ao sed, mas achei q era a melhor
> > lista pra se fazer esse tipo de pergunta.
> >
> > Alguem tem a solucao? Se possivel, como direcionar ambos (saida e erro
> > padrao) prum pipe?
> >
> > Tipo
> >
> > gcc -foo.c -o bar | grep xxxx
> >
>
> gcc -foo.c -o bar | grep xxx 2>&1
>
> assim a saida 2 (stderr) tambem vai para a saida 1 (stdout)
>
Eu jah havia tentado isso e nao funcionou.
Se eu nao estou errado, assim vc tah jogando o erro do grep pra stdout,
mas eu quero jogar o erro do gcc na entrada do grep.
Oq eu queria era o equivalente a:
[ademar@optimus ademar]$ /usr/bin/gcc foo.c -o bar &> erro
[ademar@optimus ademar]$ cat erro | grep xxxx
[ademar@optimus ademar]$
OPA! Caiu um raio na minha cabeca agora! :)
[ademar@optimus ademar]$ /usr/bin/gcc foo.c -o bar 2>&1 | grep such
gcc: foo.c: No such file or directory
[ademar@optimus ademar]$
[ademar@optimus ademar]$ /usr/bin/gcc foo.c -o bar 2>&1 | grep -v such
gcc: No input files
[ademar@optimus ademar]$
ah... Agora sim! :)
De qquer modo, valeu a ajuda, foi soh eu entender oq tava acontecendo pra
sair a solucao correta. :)
[]'s
==============================================
Ademar de Souza Reis Jr.
http://members.xoom.com/ademarjr
Estudante de Informatica / Bolsista PET - UFPR
Happy Linux Home User #71790
ademar@...
Curitiba - PR - Brasil
--
"I use Linux because reboots are for hardware upgrades"
não é sed, é uma ER em python, mas também se aplica ao sed, sobre a
importância da ordem em que se coloca as alternativas, pois sempre a
primeira encontrada é a que vale:
tipo:
echo ab | sed 's§\(a\|b\)§\1§' ---> a
echo ab | sed 's§\(b\|a\)§\1§' ---> b
as duas casam OU 'a' OU 'b', mas a ordem dentro dos ()s importa.
----------------------------------------------------------------------
com prazer!
essa é a string na qual será feita a pesquisa:
entry = 'parted-0.0.8-pre1/po/parted.pot'
aqui estão as 2 REs:
re.match('parted-([.0-9]+[a-z]?|[.0-9]+-b[0-9]+|[.0-9]+-pre[0-9]+)',
entry).group(1)
re.match('parted-([.0-9]+-b[0-9]+|[.0-9]+-pre[0-9]+|[.0-9]+[a-z]?)',
entry).group(1)
pelo que entendi, aqui está se explicando a importância da ordem em
que as alternativas são colocadas, porque as 2 REs são idênticas,
apenas mudando a ordem em que aparecem as 3 alternativas
dentro do primeiro agrupamento de (isso|aquilo|outro)
o cano '|' lê-se 'ou' - e com isso o resultado se altera, pois ele
casa sempre a primeira que encontrar.
ele casa a string 'parted-'
depois alternativamente ele pode casar:
ou [.0-9]+[a-z]? '.' ou núm. (1 ou mais), e opcional 1 letra
ou [.0-9]+-b[0-9]+ '.' ou núm. (1 ou mais), '-b' , núm. (1 ou mais)
ou [.0-9]+-pre[0-9]+ '.' ou núm. (1 ou mais), '-pre', núm. (1 ou mais)
o group(1) serve para pegar o conteúdo do agrupamento 1 (como o \1 no
sed)
e os resultados são
'0.0.8' e '0.0.8-pre1'
o primeiro casando com a primeira alternativa acima (núms e letra
opcional) e o segundo casando com a terceira alternativa acima (núms,
pre- e núms)
re.match('parted-([.0-9]+[a-z]?|[.0-9]+-b[0-9]+|[.0-9]+-pre[0-9]+)',
entry).group(1)
resultado: '0.0.8'
re.match('parted-([.0-9]+-b[0-9]+|[.0-9]+-pre[0-9]+|[.0-9]+[a-z]?)',
entry).group(1)
resultado: '0.0.8-pre1'
só é meio misturado, mas é fácil não?
> depois me explica!
>
> On Wed, 20 Oct 1999, aurelio marinho jargas - ctba wrote:
>
> >
> > e olhando a 1ª vista parece ser complicadíssima, mas só usa funções
> > básicas como classes e alternativas. isso é muito massa &:)
> >
> > > Expressao regular bonitinha...
> > > Cavassin
> >
> > > >>> entry = 'parted-0.0.8-pre1/po/parted.pot'
> > > >>> re.match('parted-([.0-9]+[a-z]?|[.0-9]+-b[0-9]+|[.0-9]+-pre[0-9]+)',
entry).group(1)
> > > '0.0.8'
> > > >>> re.match('parted-([.0-9]+-b[0-9]+|[.0-9]+-pre[0-9]+|[.0-9]+[a-z]?)',
entry).group(1)
> > > '0.0.8-pre1'
--
s/&:(/&>(/g,aurelio@...
http://www.conectiva.com.br/~aurelio
"indignação_movendo_a_nação"<ESC>:wq
------------------------------------
NOVA! http://www.brasmidia.com/dumbs
repensei aquele sed que pega o email de um cara do cabeçalho da
mensagem (filtro_suporte) e _acho_ que cheguei num sed genérico o
suficiente e consistente (e bem mais esperto e entendível):
echo " \"au-re.lio\" <(a_u-re.lLio@cNN_-nc.com)> lala" |
sed "s§.*[^-A-z._]\([-A-z._]\+@[-A-z._]\+\).*§\1§"
assumindo que os caracteres válidos para usuário e domínio são
-A-z._
dá uma testada aí por favor (só não quebre o vidro do monitor) &;)
--
s/&:(/&>(/g,aurelio@...
http://www.conectiva.com.br/~aurelio
"indignação_movendo_a_nação"<ESC>:wq
------------------------------------
NOVA! http://www.brasmidia.com/dumbs
a aí moçada.
seguinte, para desenvolvermos nosso conhecimento em sed, vou
"tentar" postar toda semana (ou a cada 2 semanas) exercícios em sed
para exercitar seus neurônios. &:)
como sempre, o tópico é sed e ERs. e como sempre, pode haver inúmeras
maneiras de se fazer a mesma coisa, como o clássico: "imprimir as
primeiras 10 linhas do arquivo tal?"
vamos tentar começar com uns menos complexos e depois vamos vendo
conceitos mais avançados.
quem conseguir alguma resposta, poste para a lista e vamos discuti-la.
ganha a resposta:
- que for mais específica e consistente
- que utilizar menos caracteres
- que funcionar &:)
EXERCICIO 1:
das URLs, uma por linha:
http://www.conectiva.com.brftp://caicom.com/pub/linuxhttp://linux.orghttp://www.redhat.com
extrair o nome da "empresa" ou instituição de cada uma. o resultado
será:
conectiva
caicom
linux
redhat
para tornar as coisas mais quentes, sua expressão NÃO deve casar essas
entradas:
clique <a href="http://www.seumala.com.br">aqui</a>.
/var/www/www.errado.com
veja://errou.orgftp://erroufeiocom
http:/errado.com.br
http://com
boa sorte!
--
s/&:(/&>(/g,aurelio@...
http://www.conectiva.com.br/~aurelio
"indignação_movendo_a_nação"<ESC>:wq
------------------------------------
NOVA! http://www.brasmidia.com/dumbs
arquivo "sed-macho.sh" anexado pros curiosos
[~] . sed-macho.sh
[~] echo seu mala | Direitiza seu mala
[~] echo seu mala | Centraliza
seu mala
[~] echo seu mala | Esquerdiza
seu mala
[~] echo seu mala | Verticaliza
s
e
u
m
a
l
a
[~] echo seu mala | Verticaliza | Centraliza
s
e
u
m
a
l
a
--
s/&:(/&>(/g,aurelio@...
http://www.conectiva.com.br/~aurelio
"indignação_movendo_a_nação"<ESC>:wq
------------------------------------
NOVA! http://www.brasmidia.com/dumbs
consideração interessante sobre a velocidade.
s/[^,]*://
normal.
s/,[^,]*:/,/
este é mais rápido pois de cara, ele já casa uma vírgula, e passa
para a próxima parte, eliminando o trabalho do * de ficar tentando
casar nos caracteres que vêm antes da vírgula.
---------------------------------------------------------------
Date: Fri, 26 Nov 1999 15:40:13 +0000
From: Matthew Winn <matthew@...>
To: VIM <vim@...>
Subject: [vim] Re: Substitute
On Fri, Nov 26, 1999 at 04:29:50PM +0100, Andrzej M. Ostruszka wrote:
> :s/[^,]*://
>
> You're not saying what those strings are composed of so I suppose that
> the answer is "delete non-comma string in front of colon".
:s/,[^,]*:/,/
(Considerably faster.)
--
Matthew Winn (matthew@...)
até hoje não encontrei uma tradução legal para "back
reference". alguém tem alguma sugestão?
para quem não sabe/lembra, isso é o \1, \2
tipo:
\(eu\)\1
casa 'eueu'
s/eu \(não\)/você \1/
troca 'eu não' por 'você não'
back reference é como uma "referência retroativa" ou coisa parecida,
pois primeiro você deve marcar a ER com os ()s e depois você a
referencia usando o \1
alguém?
--
s/:(/:)/;s/:(/:|/;s/:(/>(/,http://www.conectiva.com.br/~aurelio
${linux/gui/},ctrl+a],http://www.brasmidia.com/dumbs<esc>:wq