The UNIX and Linux Forums  


Go Back   O UNIX e Linux Forum > Top Fóruns > Programação Shell Script e
.
google unix.com



Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
Precisa de ajuda em sed comando (adicionando uma linha em branco btw cada bloco gerado por padrão) frozensmilz Programação Shell Script e 2 01-08-2009 12:12
fazer múltiplas linha contendo um padrão único em linha VTAWKVT Programação Shell Script e 13 12-04-2008 06:40
comentário / apagar um determinado padrão a partir de segunda linha da correspondência padrão IMAS Programação Shell Script e 4 10-13-2008 03:37
Impressão fora padrão na linha FK_Daemon Programação Shell Script e 3 11-23-2007 04:27
sed - substituição da linha que contém o padrão coincide com uma nova linha kousikan Programação Shell Script e 2 03-24-2007 07:24

Reply
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 01-05-2009
frozensmilz's Avatar
frozensmilz frozensmilz is offline
Usuário
  
 

Join Date: Aug 2008
Lugares: 28
Precisa de ajuda em sed comando [imprimir um padrão + sua linha nenhuma linha ou não sozinho]

Olá amigos,

Só muito recentemente comecei aprendizagem sed ... encontrei um comando que sed é mais rápido para encontrar os padrões do que alguns dos meus scripts que usa grep para verificar o soco no interior de uma linha por linha arquivo usando método de pesquisa que é demorado.

O script abaixo "strMatch" um deles é o que eu uso para procurar um padrão. Quando o padrão for encontrado ele irá exibir o modelo e o número da linha ou o número da linha isoladamente, conforme mostrado abaixo.

> Entrada
strMatch Sample.cpp "FLUXOS STRING"
> Saída
5: FLUXOS STRING

> Entrada
strMatch Sample.cpp "FLUXOS STRING" 2
> Saída
5

Muitos dos meus outros script foi iniciada usando esse script e da dependência a este script tem quase se tornou tão complexo que os novos scripts que usa strMatch directa ou indirectamente, para várias finalidades é lento na execução. Tenho notado que os seguintes sed comando pode ser usado para tweak strMatch para aumentar a velocidade de busca ...

sed '/ FLUXOS STRING / p' Sample.cpp

Mas eu preciso para obter o número da linha também gosto do meu anterior strMatch .... Existe alguma forma de imprimir a saída como a seguir

Saída 1 [Linha número & padrão]
5 FLUXOS STRING

Saída 2 [número da linha onde encontrou-se]
5

Porque alguns dos meus scripts utiliza apenas estes os números de linha ..... Kindly ajudar na tomada de strMatch script rápido .... a finalidade de strMatch é a busca de um padrão e retorno ao padrão ou localização do padrão, juntamente com a localização ..... Abaixo é real strMatch script ...

existe um caso especial para o tratamento "incluem a" palavra-chave ..... eu não sou capaz de encontrar uma alternativa para "exec" comando para passar o conteúdo do ficheiro para uma variável como tal (com o alinhamento correto e )..... Eu sempre alguma pesquisa para incluir palavras-chave ... ele irá executar em todos os arquivos na pasta ....... penso com sed i comando vai ser exigindo "exec",

Thanks in advance ...........
-------------------------------------------------- -----------------------

filtrar () (
padrão \u003d $ 1
linha \u003d $ 2
para x em $ linha; fazer
flag \u003d `echo $ x | grep-c $ padrão»

if [$ flag eq-1]; então
return $ pavilhão
diferente
return 0
fi
feito
)

# filterKeywords () (

#)


padrão \u003d $ 2
exec <$ 1
# fileCont \u003d `rdfil $ 1`
linCnt \u003d 1

exitCnt \u003d `lincnt $ 1`
cnt \u003d 0
count \u003d 0
mode \u003d $ 3
# rdfil $ 1
enquanto lê linha; fazer

if [ "$ 2" \u003d\u003d "incluir"], então
quitCon \u003d `echo $ linha | grep-c "//-------------------------"`
if [$ quitCon-eq 1]; então
count \u003d$(($ count + 1))
if [$ count-eq 2]; então
quebrar
fi
fi
fi

status \u003d `echo $ linha | grep-c" $ 2 "`
if [$ status-eq 1]; então
fflag \u003d `filtro padrão $ $ line»
wcnt \u003d `echo $ fflag | wc-l`
if [$ wcnt \u003d\u003d 1]; então
if [$ exitCnt-ge $ cnt]; então
if [ "$ modo"! \u003d "2"]; então
caso $ modo em
"NUM") # linha número
echo $ linCnt
;

"FON") # primeira ocorrência linha
echo $ linCnt
saída
;

"FOLN") # primeira ocorrência LINE
echo $ linha
saída
;

"LN") # APENAS LINHAS
echo $ linha
;

*) # DEFAULT
echo $ linCnt: $ linha
;
esac
# echo "Olá"
diferente
echo $ linCnt
fi
# filterKeywords $ linha
fi
fi
fi
linCnt \u003d$(($ linCnt + 1))

cnt \u003d$(($ cnt + 1))
# echo $ "---------------------------------------$ cnt exitCnt "
feito

# echo "Tchau!"
  #2 (permalink)  
Old 01-05-2009
Franklin52 Franklin52 is offline Forum Staff  
Moderador
  
 

Join Date: Feb 2007
Mensagens: 4.342
Já tentou grep? Isto dá o número da linha e da linha delimitada por dois pontos:


Código:
grep -n <pattern> <file>

Para obter o número que você pode fazer algo assim:


Código:
grep -n <pattern> <file>| cut -d: -f1

Verifique a página man do grep e corte para a utilização opções.

Atenciosamente
  #3 (permalink)  
Old 04-29-2009
shivarajM shivarajM is offline
Usuário
  
 

Join Date: Apr 2009
Lugares: 12
Arrow Preciso apenas primeira aparição do padrão?

Citação:
Originally Posted by Franklin52 View Post
Já tentou grep? Isto dá o número da linha e da linha delimitada por dois pontos:


Código:
grep -n <pattern> <file>

Para obter o número que você pode fazer algo assim:


Código:
grep -n <pattern> <file>| cut -d: -f1

Verifique a página man do grep e corte para a utilização opções.

Atenciosamente
Preciso apenas a primeira aparição de correspondência padrão?

me ajude ......
  #4 (permalink)  
Old 04-29-2009
Franklin52 Franklin52 is offline Forum Staff  
Moderador
  
 

Join Date: Feb 2007
Mensagens: 4.342
Citação:
Originally Posted by shivarajM View Post
Preciso apenas a primeira aparição de correspondência padrão?

me ajude ......
Já tentou o -m opção de grep?
  #5 (permalink)  
Old 06-28-2009
Shils shils is offline
Usuário
  
 

Join Date: Jun 2009
Posts: 1
obter linha número usando comando sed

Oi,

Se o arquivo é o dado abaixo, por favor deixe-me saber se o comando está certo para obter o mesmo número que contenha a string - Terra com o "\u003d" símbolo.

Filename: example.txt
123 | Terra | 2009

sed '/ Terra /
(
\u003d
) 'Example.txt
Reply

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 11:43.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0