removendo "#" do arquivo

1. removendo "#" do arquivo

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 30/11/2009 - 08:10h

bom dia pessoal...

preciso de um script, ou comando, que eu consiga fazer um novo arquivo sem os comentários...

tenho o comando cat arquivo |grep -v "#" > ./novoarquivo
depois faço o cat novoarquivo |wc -l

a ideia seria contar as linhas de um arquivo, porem alguns estao comentados... o comando acima resolve, mas quando o comentario vem depois, nao faz certo... exemplo

micro_45 #Liberado para Diretor

desta forma ele me limpa essa linha tmb..

se alguem puder me ajudar..

obrigado desde já.

Diego


  


2. é só escolher a que se adapta melhor a vc....

Lael Lacerda
Lael

(usa Fedora)

Enviado em 30/11/2009 - 08:23h

vc esta indicando a string a ser protegida, ou seja,
"..." Protege uma string, mas reconhece $, \ e ` como especiais exemplo:"abc"
no entanto não esta discriminando que a linha que contem ele não deve ser apagado.
da uma olhada nisso:


Operadores Relacionais
== Igual
!= Diferente
> Maior
>= Maior ou Igual
< Menor
<= Menor ou Igual
Operadores Lógicos
&& E lógico (AND)
|| OU lógico (OR)
Operadores de BIT
<< Deslocamento à esquerda
>> Deslocamento à direita
& E de bit (AND)
| OU de bit (OR)
^ OU exclusivo de bit (XOR)
~ Negação de bit
! NÃO de bit (NOT)
Operadores de BIT (atribuição)
<<= Deslocamento à esquerda
>>= Deslocamento à direita
&= E de bit
|= OU de bit
^= OU exclusivo de bit

2. Redirecionamento
Operador
Ação
< Redireciona a entrada padrão (STDIN)
> Redireciona a saída padrão (STDOUT)
2> Redireciona a saída de erro (STDERR)
>> Redireciona a saída padrão, anexando
2>> Redireciona a saída de erro, anexando
| Conecta a saída padrão com a entrada padrão de outro comando
2>&1 Conecta a saída de erro na saída padrão
>&2 Conecta a saída padrão na saída de erro
>&- Fecha a saída padrão
2>&- Fecha a saída de erro
3<>arq Conecta o descritor de arquivos 3 ao arquivo 'arq'
<<FIM Alimenta a entrada padrão (Here Document)
<<-FIM Alimenta a entrada padrão, cortando TABs
<(cmd) A saída do comando 'cmd' é um arquivo: diff <(cmd1) <(cmd2)
>(cmd) A entrada do comando 'cmd' é um arquivo: tar cf >(bzip2 -c >file.tbz) $dir

3. Variáveis especiais
Variável
Parâmetros Posicionais
$0 Parâmetro número 0 (nome do comando ou função)
$1 Parâmetro número 1 (da linha de comando ou função)
... Parâmetro número N ...
$9 Parâmetro número 9 (da linha de comando ou função)
${10} Parâmetro número 10 (da linha de comando ou função)
... Parâmetro número NN ...
$# Número total de parâmetros da linha de comando ou função
$* Todos os parâmetros, como uma string única
$@ Todos os parâmetros, como várias strings protegidas
Variável
Miscelânia
$$ Número PID do processo atual (do próprio script)
$! Número PID do último job em segundo plano
$_ Último argumento do último comando executado
$? Código de retorno do último comando executado

4. Expansão de variáveis
Sintaxe
Expansão Condicional
${var:-texto} Se var não está definida, retorna 'texto'
${var:=texto} Se var não está definida, defina-a com 'texto'
${var:?texto} Se var não está definida, retorna o erro 'texto'
${var:+texto} Se var está definida, retorna 'texto', senão retorna o vazio
Sintaxe
Expansão de Strings
${var} É o mesmo que $var, porém não ambíguo
${#var} Retorna o tamanho da string
${!var} Executa o conteúdo de $var (igual 'eval \$$var')
${!texto*} Retorna os nomes de variáveis começadas por 'texto'
${var:N} Retorna o texto à partir da posição 'N'
${var:N:tam} Retorna 'tam' caracteres à partir da posição 'N'
${var#texto} Corta 'texto' do início da string
${var##texto} Corta 'texto' do início da string (* guloso)
${var%texto} Corta 'texto' do final da string
${var%%texto} Corta 'texto' do final da string (* guloso)
${var/texto/novo} Substitui 'texto' por 'novo', uma vez
${var//texto/novo} Substitui 'texto' por 'novo', sempre
${var/#texto/novo} Se a string começar com 'texto', substitui 'texto' por 'novo'
${var/%texto/novo} Se a string terminar com 'texto', substitui 'texto' por 'novo'

5. Blocos e agrupamentos
Sintaxe
Descrição
Exemplo
"..." Protege uma string, mas reconhece $, \ e ` como especiais "abc"
'...' Protege uma string completamente (nenhum caractere é especial) 'abc'
$'...' Protege uma string completamente, mas interpreta \n, \t, \a, etc $'abc\n'
`...` Executa comandos numa subshell, retornando o resultado `ls`
{...} Agrupa comandos em um bloco { ls ; }
(...) Executa comandos numa subshell ( ls )
$(...) Executa comandos numa subshell, retornando o resultado $( ls )
((...)) Testa uma operação aritmética, retornando 0 ou 1 ((5 > 3))
$((...)) Retorna o resultado de uma operação aritmética $((5+3))
[...] Testa uma expressão, retornando 0 ou 1 (alias do comando 'test') [ 5 -gt 3 ]
[[...]] Testa uma expressão, retornando 0 ou 1 (podendo usar && e ||) [[ 5 > 3 ]]


3. Re: removendo "#" do arquivo

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 30/11/2009 - 08:42h

Remove o caractere '#'
sed 's/#//g' < input > output

Conta linhas
sed -n '$=' < output

Caso queira juntar tudo:

sed -e 's/#//g' -e '$=' < input > output


4. Re: removendo "#" do arquivo

Perfil removido
removido

(usa Nenhuma)

Enviado em 30/11/2009 - 08:58h

bom dia,
para retirar as linhas que tenha o comentário no começo da linha faça o seguinte:

grep -v ^# arquivo > novo_arquivo |wc -l

Oguerino




5. ...pensei que era pra te ajudar a pensar...mas ja que o pessoal ta dando resposta tenta isso aqui q

Lael Lacerda
Lael

(usa Fedora)

Enviado em 30/11/2009 - 09:14h

Apaga todas as linhas que estiverem comentadas:

$ grep -v ^# arquivo.ATUAL > arquivo.NOVO | mv arquivo.NOVO arquivo.ATUAL

[;


6. quase laaa

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 30/11/2009 - 09:14h

bom dia srs,

laelleo, obrigado pela dica, vou ler para entender melhor....

SMarcell, o que ele faz eh remover o # das linhas, e nao quero... quero ele ele remova a linha q contenha o # porem soh se estiver na 1 posição....


oguerino, o seu deu certo, porem fazendo o |wc -l junto com o grep ele me retorna 0 zero, se faço depois de gerado o arquivo funciona..

seria interessante se ele fizesse tudo num comando soh.. me facilita pra caramba...

obrigado por enquanto, absss


7. Re: removendo "#" do arquivo

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 30/11/2009 - 09:22h

Então: sed '/^#/d' < input > output

Dica: Da próxima vez tente elaborar melhor suas perguntas.


8. Re: removendo "#" do arquivo

Perfil removido
removido

(usa Nenhuma)

Enviado em 30/11/2009 - 09:29h

Oka!
esse vai.

grep -v ^# network > novo_arquivo ;wc -l novo_arquivo

[]´s
Oguerino


9. Re: removendo "#" do arquivo

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 30/11/2009 - 09:30h

Posso estar errado, mas parece um canhão pra matar uma barata, tenta só isso:

grep -v "^#" arquivo | wc -l

Simples assim ...



10. opaaaa

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 30/11/2009 - 09:41h

SMarcell, desculpa se nao me expressei claramente, mas re-li algumas vezes antes de postar, e me pareceu claro que queria retirar os comentários... de qlq forma seu ultimo comando foi perfeito, apenas nao me trouxe a contagem em tela...

oguerino, agora ficou show de bola, funcionou....

fdmarp, como vc disse... era bem simples mesmo, e funcionou exatamente como eu queria...

me deparei com outro problema agora...

alguns arquivos possuem linha em branco, e desta forma ele vai me contar essas linhas...

como fazer agora com q ele nao conte essas linhas em branco e me de o resultado em tela???
tentei: grep -v ^"#" " " arquivo | wc -l

imaginando q " " ele entendesse q fosse em branco e nao contasse, mas nao deu certo...

obrigado a todos pela ajuda ateh o momento

Diego

tentei


11. Re: removendo "#" do arquivo

Perfil removido
removido

(usa Nenhuma)

Enviado em 30/11/2009 - 09:48h

Acho que esse comando ajuda.
egrep -v "^#|^$" arquivo |wc -l

[]´s
OGUERINO


12. matouuuuu

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 30/11/2009 - 09:54h

OGUERINO, agora sim..

so me diga..

o egrep faz o q?

o -v ele exclui a expressao

o ^ quer dizer q eh a primeira posição da linha????

o $ seria a linha em branco???

nao basta saber, eh preciso saber fazer neh? :)

obrigado a todos,


Diego



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts