O grep não altera o arquivo, ele faz a filtragem e joga o resultado para a
saída padrão... ou vc redireciona essa saída pra outro arquivo, ou força o grep
a executar em um subshell para poder redirecionar para o próprio arquivo. Por
exemplo:
echo "$(grep -v algumacoisa arq.txt)" > arq.txt
---
Não seria porque é outro usuário que está executando o script? Talvez o usuário
que está rodando o script não tenha permissão para usar o "route" e esteja
gerando um erro.
--- Em qui, 6/11/08, Rafael Tomelin <[EMAIL PROTECTED]> escreveu:
De: Rafael Tomelin <[EMAIL PROTECTED]>
Assunto: [shell-scr
Chute: experimenta colocar o código octal da quebra de linha:
sed "s/'/'\012/g" EDI_LIMPO.PM
--- Em ter, 11/11/08, Júlio César Mauro <[EMAIL PROTECTED]> escreveu:
De: Júlio César Mauro <[EMAIL PROTECTED]>
Assunto: [shell-script] SED no Solaris
Para: shell-script@yahoogrupos.com.br
Data: Terça-fei
Para escapar os pontos vc pode usar o seguinte:
zone=`grep file $I | cut -d\" -f2`;
zone=${zone//./.}
--- Em seg, 17/11/08, Renato de Oliveira Diogo <[EMAIL PROTECTED]> escreveu:
De: Renato de Oliveira Diogo <[EMAIL PROTECTED]>
Assunto: [shell-script] Problemas de sed com variavel
Ah, entendi errado o que vc queria... isso deve resolver
zone=${zone/$zone/slaves.rev $zone}
--- Em seg, 17/11/08, Renato de Oliveira Diogo <[EMAIL PROTECTED]> escreveu:
De: Renato de Oliveira Diogo <[EMAIL PROTECTED]>
Assunto: [shell-script] Problemas de sed com variavel de shell
Para: shell-scr
Olá César,
Se estiver usando o gnu grep, pode usar o seguinte:
grep -B5 padrao arquivo | head -1
A opção "-B5" retornará as 5 linhas anteriores à linha que casou com o padrão.
O head -1 vai pegar a primera dessas 5 linhas, que deve ser o login.
Espero que ajude
Abraços
Fernando
--- Em seg,
Da forma que seu script está, vc vai precisar mudar um pouco. Primeiro porque
vc está pegando todos os registros de uma vez (a maior causa da lentidão). Em
vez de fazer um
SELECT * FROM ...
Você vai precisar saber a quantidade de registros da tabela (use COUNT(*) para
isso). Sabendo a quantida
Não sei se entendi o que vc quer, mas experimenta isso:
grep -i -A2 "from usuario" /var/log/procmail.log | grep -v "^--" | awk
'NR%3==0{print}' | sed 's/.*\///'
Explicando passo a passo...
O primeiro grep vai retornar as duas linhas seguintes às que casarem com o
padrão "from usuario".
O seg
Nesse caso, como a url é sempre a mesma e só muda a extensão, é mais fácil usar
wget:
wget -r -A .zip,.gz -np http://www.linuxfocus.org/common/src2/article350/
--- Em sex, 13/2/09, Ivan lopes escreveu:
De: Ivan lopes
Assunto: [shell-script] Mais uma thred! rs!
Para: "shell-script"
Data: Sexta
É algo assim que vc quer?
v="CATALOGS_DELETION_2009-07-27.16.18.22.384888.xml"
sed 's/\(^.*_\)\(.*\)\(\.xml$\)/\2/' <<< $v
2009-07-27.16.18.22.384888
Abraço
--- Em seg, 27/7/09, Alicino escreveu:
De: Alicino
Assunto: [shell-script] Uma sugestao de cut ou algo melhor
Para: "shell-script list
Se vc usar o head *antes* do xargs, o problema não ocorre (pela explicação do
Júlio, faz sentido, pois serão passados menos dados):
du -k * | sort -nr | head | cut -f2 | xargs du -sh
Abraços
--- Em qua, 12/8/09, Julio C. Neves escreveu:
De: Julio C. Neves
Assunto: Re: [shell-script] comando
Você pode inverter a string e pegar o primeiro campo:
dirname /mnt/comp/musicas/Audioslave/Musicas.mp3 | rev | cut -f1 -d'/' | rev
Ou usar um sed:
dirname /mnt/comp/musicas/Audioslave/Musicas.mp3 | sed 's/.*\///'
Abraços
--- Em sáb, 12/9/09, Elder Marco escreveu:
De: Elder Marco
Ass
Já tive problemas com saídas verbosas no cron... Faça um teste retirando os
echos e a opção verbose do tar.
Espero que ajude =)
Abraços
--- Em seg, 28/9/09, Luiz guilherme Nunes Fernandes
escreveu:
De: Luiz guilherme Nunes Fernandes
Assunto: [shell-script] dúvida
Para: "turma shell"
Data:
Algumas idéias:
a='#Teste# de #script#. Teste de #script2#. #Ultimo# teste de #script3#'
Teste se a string contém '#', se não tiver, acabamos. Pode usar isso em um
laço:
echo $a | grep '#'
Substituindo a primeira ocorrência do que está entre '#' por '*'
echo $a | sed 's/#[^#]*#/*/'
Removen
ha colocado 'end'!
Agora eu testei, e está funcionando.
Abraço
--- Em seg, 18/1/10, Fernando Luizao escreveu:
De: Fernando Luizao
Assunto: Re: [shell-script] Alteração de campos individualmente.
Para: shell-script@yahoogrupos.com.br
Data: Segunda-feira, 18 de Janeiro de 2010, 17:15
Júlio, aproveitando o embalo =)
Teria como dizer ao sed algo como "substitua as duas primeiras ocorrências", ou
"substitua a terceira e quinta ocorrências"? Por exemplo, para substituir as
duas primeiras eu concatenei dois comandos:
sed 's/#/*/; s/#/*/'
Existe uma forma melhor de fazer isso?
lquer forma muito obrigado pelo seu tempo e disposição.
Assim que eu tiver a solução eu posto aqui.
[]s
--- Em shell-script@ yahoogrupos. com.br, Fernando Luizao
escreveu
>
> Algumas idéias:
>
> a='#Teste# de #script#. Teste de #script2#. #Ultimo# teste de #script3#'
O script é executado em um novo shell, e dentro desse shell vc realmente muda
de diretório, porém, quando o script termina, voltamos ao shell "original", que
continua no mesmo diretório. O código abaixo tem o mesmo efeito:
(cd /root ; pwd;); pwd
Abraço
--- Em ter, 13/4/10, André Déo escreveu
Acho que não dá, pelo menos não sem algum truque... o "cd" é implementado como
*builtin* no shell, e não como um binário externo justamente porquê cada
script/binário roda em um processo separado, e quando o processo termina
voltamos ao diretório em que estávamos. Pode até ter alguma forma de fa
Uma com awk:
ls -l | awk 'substr($9, 6, 4) < 1379 { print $9 }' | xargs rm
Explicando:
O substr vai cortar 4 caracteres do nono campo (no nosso caso, o nome do
arquivo, por exemplo BD_1_1373_693048009.arc), a partir do sexto caracter,
cortando apenas o número (1373). Com o número cortado, faze
Acho que o que vc quer é
awk 'substr($0, 18, 6) == "001121" { print }'
Abraços
--- Em qua, 28/4/10, M. Rodrigo Monteiro escreveu:
De: M. Rodrigo Monteiro
Assunto: [shell-script] Pesquisa de substring
Para: shell-script@yahoogrupos.com.br
Data: Quarta-feira, 28 de Abril de 2010, 14:57
Retirado daqui: http://thobias.org/doc/sosed.html#toc31
sed 'N;s/\n//' arquivo.txt
Abraço
--- Em ter, 11/5/10, Lawrence Waclawiak escreveu:
De: Lawrence Waclawiak
Assunto: [shell-script] Formatar lista
Para: shell-script@yahoogrupos.com.br
Data: Terça-feira, 11 de Maio de 2010, 15:25
sed 's/\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\1-\2-\3/' arquivo
A idéia é fazer o match apenas com as datas não formatadas, criar 3 grupos, e
depois "juntar" esses grupos com hífens. Qualquer dúvida com a regex é só
perguntar.
Abraço
--- Em qua, 26/5/10, Moroni Vieira escreveu:
De: Moro
Outra alternativa é usar pushd/popd, algo assim:
cd backup
for i in *
do
pushd $i
# faz o que precisa fazer dentro do diretorio
popd # volta para o diretório backup
done
Abraço
--- Em sex, 28/5/10, Bruno Gunter escreveu:
De: Bruno Gunter
Assunto: Re: [shell-script] Como fazer um
Imagino que seu arquivo esteja assim:
cat arquivo
lalal
lele
dgdfgfd vbcvbcvbcv sddfhgdgb cvretghddg cvbcvbcvbvaczxc sdgdf dfgdfg
dfgdfgdfgdfgdfgdfg
dgdfgfd vbcvbcvbcv sddfhgdgb cvretghddg cvbcvbcvbvaczxc sdgdf dfgdfg
dfgdfgdfgdfgdfgdfg
dgdfgfd vbcvbcvbcv sddfhgdgb cvretghddg cvbcvbcvbvaczxc sd
sed -r 's#/wp-content/uploads/[0-9]{4}/[0-9]{2}#/images/stories#' arquivo
Usei # como separador pra não ficar escapando as barras e deixar um pouco mais
legível. Também usei a opção "-r" pra não precisar escapar os quantificadores
que fazem o match com a data.
A expressão regular é bem simples,
Provavelmente só funfa no bash, mas é uma idéia:
VAR="teste
Testando"
# separa a string na quebra de linha e transforma num array, usando o IFS
x=( $VAR )
# juntando novamente, colocando o C no meio
z="${x[0]}C${x[1]}"
Abraço
--- Em qua, 23/6/10, Jeiks escreveu:
De: Jeiks
Assunto: [shell-sc
de linha
Para: shell-script@yahoogrupos.com.br
Data: Quarta-feira, 23 de Junho de 2010, 15:53
Obrigado Fernando, mas podem ser várias linhas.
mesmo assim, muito obrigado
Em 23 de junho de 2010 15:35, Fernando Luizao
escreveu:
>
>
> Provavelmente só funfa no bash, mas é uma idéia:
Acho que o sed não suporta o atalho '\d', o jeito é usar uma lista no lugar,
por exemplo:
sed -r 's/^[+-]?(([0-9]+|[0-9]{1,3}(\.[0-9]{3})+)(\,[0-9]*)?|\,[0-9]+)$//'
O sed acima vai substituir um número válido por *nada*, aí se vc quiser validar
pode usar o wc para contar o número de palavras. P
Olá,
Sem olhar o arquivo fica difícil, mas o mais provável é que o shell está
"comendo" alguns caracteres porque vc não protegeu a variável $linha. Em vez de
echo $linha >> "pro_"$nome_arq
Faça
echo "$linha" >> "pro_"$nome_arq
Se não resolver, mostre como está o arquivo.
Abraços
Fernando
--
Só mudando a ordem dos cuts vc já elimina um pipe:
KERNEL_DIR=/lib/modules/2.6.32-23-generic
echo $KERNEL_DIR | cut -d- -f1 | cut -d. -f3
Usando sed, vc fica com um subprocesso só:
sed -r 's/.*[0-9]+\.[0-9]+\.([0-9]+).*/\1/' <<< $KERNEL_DIR
Se ficar com alguma dúvida com a expressão regular é s
--- Em qua, 7/7/10, Francisco Ambrozio escreveu:
> Eu acredito que um boa solução seria separar a versão do kernel de
> KERNEL_DIR para uma outra variável. Neste caso, a ideia do Elder Marco
de
> usar o "uname -r" é excelente.
>
> Com a versão do kernel isolada você pode pegar a parte dela q
Remover tudo *que nao termine* com .fs:
rm *[^.fs$]
Abraços
--- Em sex, 16/7/10, ®...@®ÐØ escreveu:
De: ®...@®ÐØ
Assunto: [shell-script] lista de exclusão
Para: shell-script@yahoogrupos.com.br
Data: Sexta-feira, 16 de Julho de 2010, 12:34
Galera, bom
Da manpage do bash:
... A full search of the directories in PATH is performed only if the command
is not found in the hash table. If the search is unsuccessful, the shell
searches for a defined shell function named *command_not_found_handle*. If
that function exists, it is invoked with the o
sed -i '1i HTXT'
--- Em qui, 26/8/10, Leandro Valiengo escreveu:
De: Leandro Valiengo
Assunto: [shell-script] Incluir header e trailer
Para: "Shell Script"
Data: Quinta-feira, 26 de Agosto de 2010, 9:22
Bom dia grupo,
Pergunta simples.
Desculpem o double post, mas só complementando minha resposta anterior, segue
uma maneira de inserir na primeira e última linha ao "mesmo tempo":
sed -e '1i HTXT' -e '$ a\T' arquivo
Abraços
--- Em qui, 26/8/10, Fernando Luizao escreveu:
De: Fernando Luiz
e Agosto de 2010, 11:06
Bem... tentei entender a solução apenas procurando por "1i" e "HTXT" no man
do sed mas não entendi.
Somente pra registro.
Em 26 de agosto de 2010 10:29, Fernando Luizao
escreveu:
>
>
> Desculpem o double post, mas só complementando minha res
dade de linhas e preencher com '0', seis posicoes, tipo:
D;CARLOS;ALVES;MASC
D;MARIA;SILVA;FEM
D;AUGUSTO;SANTOS;MASC
T03
Sei contar as linhas, porém não sei fazer algo como o LPAD no oracle.
Vlw a todos.
________
De: Fernando Luizao
Para: s
38 matches
Mail list logo