shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Dividir arquivo em 02 colunas iguais


From: Julio C. Neves
Subject: Re: [shell-script] Dividir arquivo em 02 colunas iguais
Date: Fri, 9 Nov 2012 13:14:00 -0200

Dei uma bobeada na solução anterior. A que eu deveria ter postado seria
esta a seguir:

# limpando a saída do cmd
$ Var=$(cmd | sed -r '1,7d;$d;s/<K> +//')
# Criando 1º Arquivo
$ sed 's/||.*//;s/|//g' <<< "$Var" > arq1
# Criando 2º Arquivo
$ sed 's/.*||//;s/|//g' <<< "$Var" > arq2

Mas não é necessário criar o arquivo de trabalho lixo. Pode-se fazer mais
curto (mas não necessariamente mais veloz) da seguinte maneira:

$ cmd | sed -r '1,7d; $d; s/<K> +//; s/\|\|.*//; s/\|//g'
 Changes to lock  6
 Lost of signal  22
 Alarm notification  0
 Lost of frame  8
 Lost of multiframe  13
 Remote alarm  3
 Slip alarm  1
 PRBS  0
 Wrong bits  0
 Jitter variation  0
 Frames without sync  0
 Multiframe Signal  0
 Frame error  39
 Bipolar violation  78
 CRC4 error  0
$ cmd | sed -r '1,7d; $d; s/<K> +//; s/.*\|\|//; s/\|//g'
 Changes to lock  10
 Lost of signal  53
 Alarm notification  0
 Lost of frame  46
 Lost of multiframe  55
 Remote alarm  16
 Slip alarm  616
 PRBS  0
 Wrong bits  0
 Jitter variation  0
 Frames without sync  0
 Multiframe Signal  0
 Frame error  112
 Bipolar violation  18616
 CRC4 error  0

e prompt! ;)

Abcs,
Julio

*
*



Em 9 de novembro de 2012 12:53, Julio C. Neves <address@hidden>escreveu:

> # limpando a saída do cmd
> $ cmd | tail -n+8 | head -n-2 | sed -r 's/<K> +//' > lixo
> # Criando 1º Arquivo
> $ sed 's/||.*//;s/|//g' lixo > arq1
> # Criando 2º Arquivo
> $ sed 's/.*||//;s/|//g' lixo > arq2
> $ rm lixo
>
> e prompt! ;)
> Abcs,
> Julio
>
> *
> *
>
>
>
> Em 8 de novembro de 2012 20:35, nerobarrabas <address@hidden>escreveu:
>
>> **
>>
>>
>> Mestres,
>> Tenho o seguinte arquivo:
>>
>> [0;37;40m<K> ----------------------------------------------------------
>> <K> |------------------- Khomp Errors Counters on Links -----------------|
>> <K> |----------------------------------------------------------|
>> <K> |----- Link '0' on board '0' -----||----- Link '1' on board '0' -----|
>> <K> |---------------------------------||---------------------------------|
>> <K> | Error type | Number || Error type | Number |
>> <K> |---------------------------------||---------------------------------|
>> <K> | Changes to lock | 6 || Changes to lock | 10 |
>> <K> | Lost of signal | 22 || Lost of signal | 53 |
>> <K> | Alarm notification | 0 || Alarm notification | 0 |
>> <K> | Lost of frame | 8 || Lost of frame | 46 |
>> <K> | Lost of multiframe | 13 || Lost of multiframe | 55 |
>> <K> | Remote alarm | 3 || Remote alarm | 16 |
>> <K> | Slip alarm | 1 || Slip alarm | 616 |
>> <K> | PRBS | 0 || PRBS | 0 |
>> <K> | Wrong bits | 0 || Wrong bits | 0 |
>> <K> | Jitter variation | 0 || Jitter variation | 0 |
>> <K> | Frames without sync | 0 || Frames without sync | 0 |
>> <K> | Multiframe Signal | 0 || Multiframe Signal | 0 |
>> <K> | Frame error | 39 || Frame error | 112 |
>> <K> | Bipolar violation | 78 || Bipolar violation | 18616 |
>> <K> | CRC4 error | 0 || CRC4 error | 0 |
>> <K> ----------------------------------------------------------
>> [0m
>>
>> A primeira linha tem esses caracteres estranhos [0;37;40m<K> e a última
>> esses [0m
>> Preciso pegar os valores centrais das duas colunas e mandar para 02
>> arquivos, deixando texto puro.
>> Consegui fazer e ficou assim:
>>
>> #Arquivo1:
>>
>> Changes to lock 6
>> Lost of signal 22
>> Alarm notification 0
>> Lost of frame 8
>> Lost of multiframe 13
>> Remote alarm 3
>> Slip alarm 1
>> PRBS 0
>> Wrong bits 0
>> Jitter variation 0
>> Frames without sync 0
>> Multiframe Signal 0
>> Frame error 39
>> Bipolar violation 78
>> CRC4 error 0
>>
>> #Arquivo 2:
>>
>> Changes to lock 10
>> Lost of signal 53
>> Alarm notification 0
>> Lost of frame 46
>> Lost of multiframe 55
>> Remote alarm 16
>> Slip alarm 616
>> PRBS 0
>> Wrong bits 0
>> Jitter variation 0
>> Frames without sync 0
>> Multiframe Signal 0
>> Frame error 112
>> Bipolar violation 18616
>> CRC4 error 0
>>
>> Fiz o seguinte script, mas acho que poderia ser melhorado. Vejam:
>>
>> #!/bin/bash
>> comando=$(/usr/sbin/comando | sed 's/<K>//')
>> var1=$(printf "$comando" | sed 's/||/\#/' | cut -d"#" -f1)
>> var1=$(printf "$var1" | sed 's/-//g')
>> var1=$(printf "$var1" | sed '$d')
>> var1=$(printf "$var1" | sed 's/|//g')
>> var1=$(printf "$var1" | sed 's/Khomp Errors Counters on Links//g')
>> var1=$(printf "$var1" | sed 's/Error type Number//g')
>> var1=$(printf "$var1" | sed 's/^ \+//')
>> var1=$(printf "$var1" | sed 's/^ \+//')
>> var1=$(printf "$var1" | awk 'NF>0')
>> var1=$(printf "$var1" | sed '1,2d')
>> printf "$var1" > arquivo1.txt
>>
>> var2=$(printf "$comando" | sed 's/||/\#/' | cut -d"#" -f2)
>> var2=$(printf "$var2" | sed 's/-//g')
>> var2=$(printf "$var2" | sed '$d')
>> var2=$(printf "$var2" | sed 's/|//g')
>> var2=$(printf "$var2" | sed 's/Khomp Errors Counters on Links//g')
>> var2=$(printf "$var2" | sed 's/Error type Number//g')
>> var2=$(printf "$var2" | sed 's/^ \+//')
>> var2=$(printf "$var2" | sed 's/^ \+//')
>> var2=$(printf "$var2" | awk 'NF>0')
>> var2=$(printf "$var2" | sed '1,2d')
>> printf "$var2" > arquivo2.txt
>>
>> Alguém poderia analisar e tentar sintetizar esse script?
>> Resumindo/substituindo comandos?
>> Prá deixar ele mais funcional e eficaz?
>> Até mesmo para aprendizado da gente.
>>
>> Grato desde já.
>>
>> Diramos
>>
>>  
>>
>
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]