![]() |
|
|
google unix.com
|
|||||||
| Fóruns | Registar | Fórum Regimento | Ligações | Álbuns | FAQ | Lista deputados | Calendário | Pesquisa | Today's Posts | Mark Forums Read |
| 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 |
| analisar uma string em um shell script | asutoshch | Programação Shell Script e | 19 | 05-26-2008 10:18 |
| shell script analisar com o sed | jjamd64 | UNIX para Dummies Perguntas & Respostas | 5 | 12-11-2007 04:51 |
| Analisando uma linha em Shell Script | unishiva | Programação Shell Script e | 3 | 11-01-2007 04:30 |
| Ajuda em analisar um arquivo CSV com a Shell script | mihirk | Programação Shell Script e | 10 | 06-24-2007 11:58 |
| Parsing um arquivo em Shell Script | sendhilmani123 | Programação Shell Script e | 4 | 11-30-2006 02:29 |
![]() |
|
|
Linkback | Thread Tools | Pesquisar este Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Shell script para analisar o ficheiro de 300MB ..
sou relativamente novo para Shell scripting.
Tenho escrito um roteiro para analisar um arquivo grande. A lógica é a seguinte: Para além de muitas outras inúteis animais, existem muitas ocorrências de <abc> ea correspondente </ abc> tags. (Todos eles estão devidamente fechadas) Minha obrigação é encontrar uma etiqueta especial (digamos <data> 1234 </ data>) fechado em qualquer lugar entre <abc> </ abc> tags. Se encontrado, eu tenho que seguir a linha 4. Armazenar <abc> tag em um arquivo temporário. Um típico arquivo de log é algo parecido com: ************************ <pqr> ...... alguns dados alguns outros dados ......... </ PQR> algum texto de dados ........... <abc> blá blá ..... <iD> 12345 </ id> blah ... ...... <data> 1234 </ data> </ abc> ........ ..... ..... <abc> blá blá ..... <iD> 12345 </ id> blah ... ... </ abc> .......... <rst> ... ... </ rst> algum texto de dados ... **************************** Saída do script deve ser <iD> 12345 </ id> armazenados em algum arquivo temporário. A script que estou usando é: ******************** rm-f temp.log filename \u003d $ 1 OK \u003d 0 enquanto lê linha1 fazer if [ "$ line1" \u003d "<abc>"]; então OK \u003d 1 fi if [ "$ OK"-eq 1]; então echo $ linha1>> temp_file fi if [ "$ line1" \u003d "</ abc>"], então OK \u003d 0 fi if [ "$ OK"-eq 0]; então if [-f temp_file]; então enquanto lê line2 fazer if [ "$ linha2" \u003d "<data> 1234 </ data>"], então gato temp_file | awk '(if (NR \u003d\u003d 4) (print ($ 0)))'>> temp.log fi feito <temp_file rm temp_file fi fi feito <$ filename.log ******************************* O <abc> </ abc> tags entrar na última parte geral (nem sempre), após algo em torno de 500.000 linhas ... e, normalmente, o ficheiro tem cerca de 700.000 linhas. O script é executado, e continua a correr, e eu achar 2 registos que estão nas primeiras linhas armazenadas no arquivo temporário. Mas depois de alguns minutos 6-7, script termina abruptamente, dizendo: scriptname.sh teste: argumento esperado. Alguém pode me ajudar nisto? |
|
||||
|
Script não funciona ..
Citação:
Depois de ler a sua resposta, ler alguns artigos sobre o awk. De alguma forma, o script não está ainda a trabalhar, e que termina dizendo .. ********************** awk: registro `/ resposta> 00:27 :...' sex. demasiado longo número recorde 22 ********************** Tenho grandes esperanças em você agora Obrigado |
![]() |
| Marcadores |
| Thread Tools | Pesquisar este Thread |
| Display Modes | Esta taxa Thread |
|
|