Page 1 of 1

Dataprosessointia, apua kaivataan, en vaan osaa!

Posted: Tue Aug 14, 2007 12:52 pm
by anidabi
Pitäs mrtg:n logeista kentistä 2-5 leikata jokaiselta riviltä 3 viimeistä merkkiä. Tuli pilkkuvirhe asetusten kanssa ja tästä johtuen yksiköt päin persettä. Olen yrittänyt googlettaa, mutta en vaan löydä sellaista ohjetta että tajuan. Kentät pitäisi säilyttää yhtenäisenä ja ohjata ne dataprosessoinin jälkeen uuteen tiedostoon.

Alla esimerkki:

Code: Select all

Tästä pitäisi päästä

1186997100 422099094 106216147 422100992 107044864
1186996800 421531893 107042242 421568512 107044864
1186996500 421569017 106651989 421720064 106754048
1186996200 421720446 106755358 421777408 106950656
1186995900 421772219 106956554 421777408 10783539

Tähän

1186997100 422099 106216 422100 107044
1186996800 421531 107042 421568 107044
1186996500 421569 106651 421720 106754
1186996200 421720 106755 421777 106950
1186995900 421772 106956 421777 107835
Neuvoja kaivataan.

Posted: Wed Aug 15, 2007 6:10 pm
by oizone

Code: Select all

gawk '{for(i=2;i<=5;i++) $i=substr($i,0,length($i)-3); print }' tiedosto
Vaikka noin.

Posted: Wed Aug 15, 2007 10:03 pm
by Paapaa
Tai sed:llä:

Code: Select all

 sed 's/\([^ ]* \)\([^ ]\{6\}\)[^ ]* \([^ ]\{6\}\)[^ ]* \([]\{6\}\)[^ ]* \([^ ]\{6\}\)[^ ]*/\1\2 \3 \4 \5/' tem
Tuo ei oikeastaan katkaise 3 viimeistä, vaan säästää 6 ensimmäistä merkkiä. Jos nuo typistettävät kentät ovat 9-merkkisiä, tämä toimii oikein.

Posted: Thu Aug 16, 2007 5:45 pm
by anidabi
Paapaa wrote:Tai sed:llä:

Code: Select all

 sed 's/\([^ ]* \)\([^ ]\{6\}\)[^ ]* \([^ ]\{6\}\)[^ ]* \([^ ]\{6\}\)[^ ]* \([^ ]\{6\}\)[^ ]*/\1\2 \3 \4 \5/' temp
Tuo ei oikeastaan katkaise 3 viimeistä, vaan säästää 6 ensimmäistä merkkiä. Jos nuo typistettävät kentät ovat 9-merkkisiä, tämä toimii oikein.
Tuolla lähti skulaan kunnolla, kiitos! :)

Posted: Fri Aug 31, 2007 9:28 pm
by jmz2
Vähän myöhäinen vastaus, mutta myös awk hoitaisi homman, ja ehkä vähän yksinkertaisemmin:

Code: Select all

cat tiedosto | awk '{print $1 " " substr($2, 1, 6) " " substr($3, 1, 6) " " substr($4, 1, 6) " " substr($5, 1, 6) }'

Posted: Sat Dec 08, 2007 11:38 am
by Shapemaker
Heh heh, Linuxilla on todellakin monta tapaa tehdä sama asia :lol: