Condição para pular linha

1. Condição para pular linha

Victor
detoniks

(usa Debian)

Enviado em 22/02/2013 - 15:30h

Boa tarde pessoal, estou com o seguinte problema
Tenho um arquivo txt enorme e vou olar algumas linhas pra vcs terem noçao:

Channel Context Extension Prio State Application Data CallerID Duration Accountcode PeerAccount BridgedTo
SIP/gateway-00015dd2 from-trunk-sip-gatew 1 Ringing (None) (None) 00:00:50 (None)
SIP/8401-00015eae ADM 8401 1 Ringing AppDial (Outgoing Line) 8401 00:00:08 (None)
SIP/3029-00015dd9 pas 1100 1 Up AppQueue (Outgoing Line) 3029 00:00:46 SIP/gateway-00015d44
SIP/3139-00015d23 pas 1100 1 Up AppQueue (Outgoing Line) 3139 00:01:21 SIP/gateway-00015cf1
SIP/3039-00015d95 pas 1100 1 Up AppQueue (Outgoing Line) 3039 00:01:02 SIP/gateway-00015cfc
SIP/gateway-00015df7 from-trunk-sip-gatew 1 Up AppDial (Outgoing Line) 003138221778 00:00:39 SIP/3101-00015df6
SIP/gateway-00015df4 from-trunk-sip-gatew 1 Ringing (None) (None) 00:00:41 (None)
SIP/3165-00015e26 pas 1002 1 Up AppQueue (Outgoing Line) 3165 00:00:31 SIP/gateway-00015dc6
SIP/3021-00015ed0 pas 026950653 110 Ring Dial sip/gateway/126950653 00:00:03 (None)
SIP/gateway-00015dc6 discador-filas 1002 31 Up Queue 1002,t,,,20 1147010608 00:00:52 SIP/3165-00015e26

obs: ele fica fora de quebra de linhapq nao cabe na caixa

Pois então, eu estou tratando o script assim:

#!bin/sh
for i in $(cat core.txt | grep -v Channel | tr -s " " ";" ); do

CHANNEL=$(echo ${i} | cut -d";" -f1)
DURATION=$(echo ${i} | cut -d";" -f8)

echo "INSERT INTO PEERS (CANAL, DURACAO ) VALUES ($CHANNEL, $DURACAO);"
done

Eu preciso retirar os campos channel e duraçao da chamada, porém como algumas linhas tem coluna em branco, nem sempre o campo duracao eh a 8 coluna.

Ai eu notei que toda vez que o campo CONTEXT eh diferente de 'PAS' encaixa como eu quero.

ai quero fazer um if assim:

if [ $CONTEXT = "pas" ];then
pula para a proxima linha(nao sei que sintaxe usar aqui)

fi


Quem puder ajudar fico grato





  


2. Re: Condição para pular linha

Victor
detoniks

(usa Debian)

Enviado em 22/02/2013 - 16:30h

Pensei em outra maneira mais facil,

Tem como eu ir lendo linha por linha até encontrar o campo que tem horario? 00:00:00


3. Re: Condição para pular linha

Sandro Marcell
smarcell

(usa Slackware)

Enviado em 22/02/2013 - 16:42h

detoniks escreveu:

Pensei em outra maneira mais facil,

Tem como eu ir lendo linha por linha até encontrar o campo que tem horario? 00:00:00


Use o grep pra isso:

echo 'SIP/gateway-00015df4 from-trunk-sip-gatew 1 Ringing (None) (None) 00:00:41 (None)' | grep -w '00:00:00' # Não casou! 


echo 'SIP/gateway-00015df4 from-trunk-sip-gatew 1 Ringing (None) (None) 00:00:00 (None)' | grep -w '00:00:00' # Agora sim.
SIP/gateway-00015df4 from-trunk-sip-gatew 1 Ringing (None) (None) 00:00:00 (None)




4. Re: Condição para pular linha

Victor
detoniks

(usa Debian)

Enviado em 22/02/2013 - 16:49h

smarcell

vlw cara, mas nessa sua regra soh vai casar qd a duraçao da chamada for 00:00:00


Na verdade eu preciso pegar o campo da hora com o valor dela. ex: 00:00:20 ou 00:01:05

tendeu?


5. Re: Condição para pular linha

Sandro Marcell
smarcell

(usa Slackware)

Enviado em 22/02/2013 - 22:16h

Tente:

grep -Ew '??:??:??' 



6. Re: Condição para pular linha

Victor
detoniks

(usa Debian)

Enviado em 25/02/2013 - 08:33h

smarcell escreveu:

Tente:

grep -Ew '??:??:??' 


Smarcell, amigo nao deu certo nao =/
Alguma outra ideia?








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts