Ola
Estou de volta amigos,
Muito bem, a sua duvida é pertinente, porém não tem haver diretamente
com AWK e sim com redirecionamento de saída.
Quando vc faz
comando1 | awk
vc redireciona a saida padrão do processo relacionado ao comando1 ao
processo do awk.
entretanto o comando, neste caso o n
vc pode usar o xargs
find 'criterios para encontrar o /*/Span' | xargs echo /usr/sbin/ipurge
-d200 -f
dessa forma vc vai ver que o xargs utiliza apenas a quantidade de argumentos
que o ipurge suporta, executando 2 ou mais vezes.
Para executar remova o echo dali. Na pagina do Julio ha mais inform
o case in utiliza a mesma sintaxe de mascara para gerar nomes de arquivos.
nesse caso representa uma opção que vc esta passando por linha de comando
que começa com um - e tem pelo menos 1 caracter.
2009/9/17 Alain Mouette
>
>
> No script pdf2ps, achei este trecho:
>
> OPTIONS=""
> while true
>
$* é, basicamente, um string unica, enquanto $@ são varias.
um bom exemplo é como iterar sobre elas em um laço for
$ set 1 2 3 # adiciona os valores 1 2 3 para o array de argumentos $x
$ for i in "$*" ; do echo $i ; done
1 2 3
$ for i in "$@" ; do echo $i ; done
1
2
3
2009/9/30 César Vianna
Existem N maneiras para resolver o problema - o gostoso mesmo é
discutirmos as alternativas.
por exemplo, alterar o IFS pode ser simples nesse caso, mas como vc
esta alterando uma variavel de ambiente vc precisa tomar cuidado para
ver o que esta acontecendo, ou se acontece algum efeito colateral.
a diferença de tempo é proporcional ao numero de linhas do arquivo e o quão
longe ele está.
mas a versão com sed com um q no final tem mais performance, pois aborta o
programa depois da linha solicitada. com head + tail vc tem que gerenciar 2
processos, o que vc pode não desejar fazer por algum mo
Nesse caso, poderia ser simplificado para algo como
$ sed -r 's/^.{33}/&xXxXxX/' /caminho/do/arquivo
ou
$ sed -r '/^.{33}s//&xXxXxX/' /caminho/do/arquivo
por outro lado, para fazer o mesmo em awk vc poderia usar o seguinte
artificio:
$ echo "0123456789" | awk -v FIELDWIDTHS="2 1000" '{prin
Nesses casos vc poderia colocar uma boa parte do seu arquivo num pastebin da
vida ;-)
Se uma linha desse arquivo é assim:
RC=192.168.113.28 =74.86.245.121 LEN=60 TOS=0x00 PREC=0x00 TTL=63
Bastaria fazer algo como:
grep SRC= arquivo | cut -f2 -d= | sort | uniq -c
8 192.168.113.12
8 1
Anderson,
Vc poderia baixar todo o site usando wget recursivo
cd /caminho/para/mirror/atos_pmpf
BASE=http://www.fazenda.gov.br
DIR=confaz/confaz/atos/atos_pmpf/2009/
wget -r -N -l 1 --no-remove-listing ${BASE}/${DIR} -o atos.log
Depois, seria o caso de vc ter um registro do que vc ja mantou (um
Anderson,
Baseado no seu email eu pergunto: com todas as sugestões dadas aqui o
que vc ainda não consegue fazer?
Eu consigo olhar pelo log do wget quais paginas novas apareceram e
disparar um email baseado nisso, ajuda vc?
2009/10/27 Anderson Duarte
>
>
>
> Não Bruno, eu não quero criar um FEED
Tem,
utilizando alguma ferramenta que tenha suporte a comparação matemática como
awk
comandos | awk '$1 > 100{print}'
ou seguir um padrão textual de numeros maiores que 100 (inclusive)
comandos | sed -nr '/^\s*[1-9][0-9]{2,}/p'
2009/10/29 Marcelo
>
>
> Srs,
>
> No exemplo abaixo usando a mes
Ola Bruno,
Vou dar algumas dicas que PODEM ajudar
1) use interpolação de variaveis/strings com aspas duplas
sed "s/${encontrar}/${substituir}/g"
2) use um separador diferente no comando de substituição (util se vc quer
encontrar/substituir uma strings como /path/to/file)
sed "s#encontrar#subst
Muito pertinente essa duvida: existem varias formas de conseguir o que vc
quer sem apelar para algoritmos iterativos, loops, etc, apenas com bash
'puro' e pipes - e alguma criatividade.
O que vc quer ja existe no funçõesZZ [ http://funcoeszz.net/ ] do Aurelio &
Thobias sob o nome de zzuniq e vou d
vc não pode fazer um cp -vru origem destino
-v, --verbose
explain what is being done
-R, -r, --recursive
copy directories recursively
-u, --update
copy only when the SOURCE file is newer than the
destination file or when the destination
acho que o problema esta no TRAP estar sendo executado em um subshell...
experimente fazer um echo no PID a cada iteração para confirmar
2009/11/17 dhseabra
>
>
> Caros, não estou conseguindo executar o TRAP 2x na mesma sessão. Por
> exemplo, criei um menu para controle do ambiente onde o operad
yahoogrupos.com.br ,
> Tiago Peczenyj escreveu
>
> >
> > acho que o problema esta no TRAP estar sendo executado em um subshell...
> > experimente fazer um echo no PID a cada iteração para confirmar
> >
> > 2009/11/17 dhseabra
>
> >
> > >
> >
pq ele contou o \n que o echo adiciona ao final da string.
para o calculo certo use echo -n
2009/11/18 Leonardo Bites
>
>
> Gente estou fazendo um script e me deparei com um problema.
>
> num_terminal = 123456789
> echo $num_terminal |wc -c
>
> resultado 10
>
> mas como assim só tem 9 caractere
vc não pode usar uma expressão regular como em
awk '/PARNUM=/ && !/PARNUM=[0-9.]+/{print $0}' datafile
ou
awk '/PARNUM=/ && !/PARNUM=\"?[0-9.]+\"?/{print $0}' datafile
2009/11/19 Breno Moiana
>
>
> Boa tarde, pessoal.
>
> Tenho um arquivo com uma série de comandos com seus parametros, no
> se
tente
awk '{if(!$4) $4="00" ;print}' arquivo
2009/11/19 Filipe Fernandes
>
>
> Olá lista,
>
> Tenho um arquivo de texto com datas na seguinte forma:
>
> 01 10 10
> 01 10 10 10
> 01 10 10 20
> 01 10 10 30
> 01 10 10 40
> 01 10 10 50
> 01 10 11
> 01 10 11 10
> 01 10 11 20
> 01 10 11 30
> 01 10 11
Uma curiosidade, o wc tem a opção -L que imprime o comprimento da linha mais
longa de um texto. se vc estiver enviando um texto de uma linha só
coincidira com o valor da propria linha
$ echo '123' | wc -L
3
Deve ser util para formatações!!
2009/11/19 Leandro Santiago
>
>
> Na verdade caractere
$ ls ~/example/*fs
/home/peczenyj/example/a.fs /home/peczenyj/example/b.fs
/home/peczenyj/example/c.fs /home/peczenyj/example/d.fs
$ ls ~/example/*fs | sed 's/.fs$//'| xargs -n 1 basename | xargs echo mkdir
mkdir a b c d
tirando o echo do segundo xargs é possivel criar a estrutura de diretorios
Vc pode usar zsh que suporta comparações de numeros não inteiros. ;-)
2009/12/2 Leandro Santiago :
> cara, o bash não faz cálculo em ponto flutuante (com vírgula), mas a
> calculadora bc faz.
>
> Dê uma olhada nisso:
> echo 2.0 == 2.000 | bc -l
> 1
>
> echo 2.0 == 1.23 | bc -l
> 0
>
> O bc executa
Não, não funciona com AWK pois este exemplo é de expansão de variaveis em
shell.
Entretanto, no seu exemplo, $a é uma variavel do bash e não do awk. Não é de
esperar que o operador % opere sobre variaveis do awk até pq vc não invoca
as mesmas com $nome - o $ é um operador que mostra o valor daquel
echo -e 'linha\n\noutralinha' | sed '1,/\/ d'
se vc quer deletar
desde a primeira linha
ate a ocorrencia de
bastaria fazer
inicio,fim d
onde inicio é o numero 1
e o fim é uma ER que case com
outra forma
vc pode fazer o contrario, tambem, imprimir desde ate o fim
... | sed -n '/\/,$ p'
[
Ola
a unica forma q vejo agora é combinar tudo em memoria usando awk.
comando | awk '{ i = (NR-1)%5; a[i] = a[i] " " $0 }
END{ for(i=0;i<5;i++) print a[i]; }'
ou se vc não se importa em ler o arquivo 5 vezes.
for i in 1 2 3 4 5; do
gsed -n "0~${i}p" arquivo
end
com certeza existem outras fo
Nos dois casos me parece que vc pode fazer uso do find com expressões
regulares (opção -iregex ) ou concatenações lógicas das extensões que
vc precisa
find /diretorio \( -name *.doc -o -name *.ppt -o ... \)
2010/1/14 ®...@®ÐØ
>
>
>
> Meus caros colegas e sábios Gurus!
> Tenho uma arvore de dire
algo como
find . -iregex ".*\(txt\|pdf\|gif\)"
2010/1/14 ®...@®ÐØ
>
>
>
> como poderia usar expressões regulares no find para filtrar extensões?
>
> 2010/1/14 Tiago Peczenyj
>
> > Nos dois casos me parece que vc pode fazer uso do find com express
process substitution:
var=`pwd | wc -l` ou
var=$( pwd | wc -l )
2010/1/14 Luiz guilherme Nunes Fernandes
>
>
> Oi tudo bem,
> estou com uma dúvida.
>
> Se eu der:
> # pwd | wc -l
> # 1
>
> Ele me retorna 1
>
> Se eu fizer desta maneira:
>
> # pwd | wc -l >> teste
> # cat teste
> # 1
>
pode começar por aqui:
http://aurelio.net
http://wiki.softwarelivre.org/TWikiBar/WebHome
2010/3/14 João Santana
>
>
>
> Bom dia.
>
> Quero aprender a escrever scripts mas não sei por onde começar.
>
> Poderiam me indicar por onde começar a trilhar o caminho das pedras?
>
> --
>
> João Santana
>
desculpe mas não esta claro para mim o formato do arquivo
por acaso eh
>XXX
aagt...
>YYY
ggtaa..
ou vc pode ter mais de uma linha entre uma sequencia e outra?
eu começaria assim:
cut -c 1-3 arquivo
depois iria refinando :)
On Sun, Mar 14, 2010 at 9:07 AM, Graciela wrote:
>
>
> Trabalho com
Ola Graciela
Siga este guia:
http://aurelio.net/sed/sed-HOWTO/sed-HOWTO-4.html
Vejamos
/>.*/{N;s/.*\n\(...\).*/\1/p} pode ser lido como
/>.*/{comando1;comando2;...;comandoN}
ou seja, na ocorrencia da expressão '>.*' execute os comandos
limitados por { e } - esta expressão significa o sinal de
Pode começar a usar o find
find /emails -name '*-teste3.com.br.conf' -type f -print
Agora o que vc quer saber?
A quantidade vc manda pra um pipe com wc -l
E por ai vai...
2010/3/15 Alexandre Gorges
>
>
> Bom dia Lista,
>
> Estou com um problema no if.
> Montei um if assim:
>
> if [ -f /emails/
find . -name 'g*' -type f
> Em 23 de março de 2010 17:28, gleissonmb escreveu:
>
>>
>>
>> Boa tarde galera,
>>
>> Preciso testar o primeiro caracter de uma string dentro de um if, como
>> posso fazer isso?
>>
>> Objetivo: Listar todos arquivos que iniciem com a letra "g".
>>
>> Ex:
>> Estou list
vc quer a opção -o
grep -o 'palavra'
grep -oE 'expressao_regular'
2010/3/31 xiss_break
>
>
> Olá pessoal, tive a necessidade de pegar texto exato dentro de um arquivo,
> exemplo:
>
> Conteudo do arquivo
> caixa
> caixa1
> caixa2
>
> Quando fazia a busca por "caixa" usando o grep sempre vinha os
sugiro separar com awk
$ cat teste
[evento]
um
dois
[evento]
tres
quatro
$ awk '/\[evento\]/{ i++; } { print >> "split_" i;}' teste
$ cat split_1
[evento]
um
dois
$ cat split_2
[evento]
tres
quatro
Basicamente eu somo 1 a variavel i para cada cabeçalho [evento] -- substitua
pelo seu -- e escre
mentos.com.br;
> - DF turma de Shell em 17/04 - ligue (61) 3223-3000;
> - Aracaju turma de Shell em 12/05 - andersonriz...@gmail.com;
> - RJ turma de Shell em 14/06 - ligue (21)2210-6061;
> - Turmas fechadas em outras cidades ligue (21) 8112-9988.
>
>
> Em 7 de abril de 2010
vc poderia usar o comando pr
$ pr --columns=5 -t -s' ' arquivo
Para isso vc deve ter exatamente um item por linha
veja:
$ seq 20 | pr --columns=5 -t -s' '
1 5 9 13 17
2 6 10 14 18
3 7 11 15 19
4 8 12 16 20
o -t é para omite as informações que o pr adiciona, tanto no começo
quanto no fim.
2010
vc poderia usar uma combinacao de tail com o seu script para fazer isto,
veja este exemplo com o comando cat -n
peczenyj$ cat a.sh
#!/bin/bash
tail -n +3 $0 | cat -n ; exit 0
texto bem
divertido
peczenyj$ ./a.sh
1 texto bem
2
3 divertido
4
se vc trocar o cat -n pelo octave,
Para cada | e $( ) vc abre um subprocesso.
Como vc faz isso durante MUITAS vezes o processo vai ser lento porem, se
dura menos de 1 segundo, eu nao acho isto lento IMHO.
Se vc criar um script awk no lugar do script shell vc nao tera esse overhead
dependendo de como vc cria-lo.
2010/5/3 Lawrence
vc pode fazer um pipe para o tr e usar a opcao -d '\octal' onde octal eh a
representacao octal do caracter.
por exemplo 0x08 eh 010 em octal, logo
programa | tr -d '\010'
deve resolver.
outra opcao que vc pode usar junto eh -u para nao bufferizar o resultado.
2010/5/3 Alain Mouette
>
>
> Te
Apenas para colaborar,
Ate hoje eu vi apenas um caso de variavel de ambiente que foi mal utilizada
em um script, que foi justamente uma subfunção que sobreescrevia o PATH (era
uma url que era quebrada em varias partes, DOMAIN, QUERY e... PATH) e logo
depois tentava executar algum programa (o java,
Talvez seja o seu exemplo mas eu consegui ordenar os ips da mesma forma que
vc usando um sort apenas
$ sort -t \; -k 6 -n database > r1
$ gsed -r 's/(^.*;(([0-9]{1,3}\.){3})([0-9]{1,3});.*$)/\4;\1/' database
|sort -n |gsed -r 's/^[0-9]{1,3};//' > r2
$ diff -s r1 r2
Files r1 and r2 are identical
e
echo $RANDOM
2010/5/13 nbarreiro4
>
>
> Como geramos números aleatórios em shell?
>
>
>
--
Tiago B. Peczenyj
Linux User #405772
http://pacman.blog.br
[As partes desta mensagem que não continham texto foram removidas]
-
Vc não pensou em usar md5sum para comparar (e diff para ter certeza)?
Ou sha1sum...
2010/5/14 Marcelo Salhab Brogliato
>
>
> Pessoal,
> apenas quero compartilhar com vcs um one-liner que eu fiz pra resolver um
> problema de duplicação de arquivos.
>
> ls -lah -Sr | awk '{ FLAG=0 } L_SIZE == $5
willian,
Esse tipo de post não é permitido (basta olhar o rodape da lista),
porem como imagino que vc esta tentando ajudar e tem bom coração...
Vejamos, numa estação Sparc Sun que eu utilizava 10 anos atrás eu
utilizava um aplicativo chamado txt2ps - que convertia plain text em
postscript bonitin
A lentidao se da pelo fato de vc executar 65347856392 vezes o comando awk.
Vc pode fazer esta busca de varias formas, por exemplo vc pode ler 2
arquivos, colocar o primeiro em um array, etc.
Uma forma de agilizar seria assim:
grep -f 'arquivo01.txt' arquivo02.txt
que encontra cada linha de arqu
para isto funcionar vc precisa fazer shopt -s extglob para habilitar
estes truques.
uma solução é usar um find
find . -not -name \*.fs -type f | xargs rm
2010/7/16 Rodrigo Caldas :
> Acho que isso pode funcionar, não tenho como testar agora:
>
> rm !(*.fs)
>
> A exclamação serve para negar o qu
Bem util para ver os ultimos emails e quem mandou
$ curl -u usuario:senha --silent
"https://mail.google.com/mail/feed/atom"; | sed '1,/\/d' | awk
-F '[<>]' '//{ print "msg",$3 }
// {print "\t-",$3}
BEGIN{ print ":::GMAIL by peczenyj:::"}'
Me baseei nesse script porem dei uma simplificada
http:/
o read -n resolve
$ bash a.sh
insira a data 123456
data=123456
$ cat a.sh
clear
tput cup 2 10; echo "insira a data"
tput cup 2 24; read -n 6 data
echo -e "\n\ndata=$data"
entretanto vc pode ter algo no ambiente ou no interpretador que esta
atrapalhando.
2010/7/20 Édnei Rodrigues
>
Parece bom. Eu, pessoalmente, faria um
grep -c 'padrao' /dir/arquivo
que substitui os 3 pipes.
e faria o sed criar um backup do seu rc com a opcao -i.old -- criando um
arquivo rc.old com o conteudo original.
2010/8/13 Sérgio
>
>
> Galera, há um recurso que quero habilitar caso o processador
Ola
du -h retorna em linguagem humana. se vc estar pode encontrar valores
maiores que 20 k, 20 M, 20 Gigas...
se vc quer comparar com 20 Kb podes fazer isso
total=$(du -d 0 | cut -f 1)
if [ "$total" -ge 20480 ] ; then
echo maior # ou o que vc quiser fazer
else
echo menor # idem
fi
para 20
gt; No uso desta função...
> Eu gostaria de saber quais os arquivos que estão maiores que 1GB ( por
> exemplo
> )
> então eu necessito listar somente os arquivo que são maiores que 1GB.
> necessito o nome do arquivo que satisfaça essa condição.
> ( fui bem incompleto antes ) me d
'E para fechar a saida de erro.
E realmente o find tem uma opcao para procurar por tamanho... enchi de
pipes a toa :/
2010/8/23 eric miranda
>
>
> Essa eu não conhecia "2>&-"
>
> O que é o "-"?
>
> vlw!
>
> Eric
>
> Em 23
hum... mas [:lower:] não é expandido para [a-z] não? Queria fazer um
teste com algum caracter encoding diferente...
2010/8/25 Jeiks :
> Olá Gabriel,
> isso acontece devido a codificação utilizada em seu sistema, que tem as
> letras em maiúsculo próximas as em minúsculo, ou seja, ao invés de ser
para isso use a combinação -print0 do find com -0 do xargs
find -opções -print0 | xargs -0 comando
ou use a opcao -delete do find
2010/8/30 Cristiano
>
>
> Caros amigos, Bom dia!
>
> Estou com uma série de arquivos .eml em meu S.O. Linux e não consigo
> apagá-los, em pesquisa, encontrei o coma
Ney,
Se vc tem arquivos cujo nome possui espaco em branco, isso confunde o
comando rm pois o espaco também é separador de arquivo.
Vc poderia fazer o seguinte
while read i ; do
rm "$i" || echo "erro ao excluir '$i' "
end < arquivo
Ou alterar o IFS durante a operação, no livro do julio tem exe
Isto deveria bastar
grep 'teste0\b'
Onde \b representa uma Borda, ou seja, vc quer algo que case com teste0
e não tenha nada depois disso colado na string. Neste caso casaria com
teste0$
teste0 $
teste0 $
teste0\t\t\t$
onde $ representa o fim da linha.
2010/9/2 Edua
Vc pode fazer isto inline
LANG=en_US.UTF-8 date +%b
Assim vc não altera o seu sistema
2010/9/2 Eri Ramos Bastos
>
>
> Muda o valor da variável LANG[1]
>
> $ export LANG=pt_BR
> $ date --date "1 month ago" +%b
> Ago
> $ export LANG=en_US.UTF-8
> $ date --date "1 month ago" +%b
> Aug
>
> [1]
> h
58 matches
Mail list logo