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!"