# Dataprosessointia, apua kaivataan, en vaan osaa!

## 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:

```

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.

----------

## oizone

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

Vaikka noin.

----------

## Paapaa

Tai sed:llä:

```
 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.

----------

## anidabi

 *Paapaa wrote:*   

> Tai sed:llä:
> 
> ```
>  sed 's/\([^ ]* \)\([^ ]\{6\}\)[^ ]* \([^ ]\{6\}\)[^ ]* \([^ ]\{6\}\)[^ ]* \([^ ]\{6\}\)[^ ]*/\1\2 \3 \4 \5/' temp
> ```
> ...

 

Tuolla lähti skulaan kunnolla, kiitos!  :Smile: 

----------

## jmz2

Vähän myöhäinen vastaus, mutta myös awk hoitaisi homman, ja ehkä vähän yksinkertaisemmin: 

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

----------

## Shapemaker

Heh heh, Linuxilla on todellakin monta tapaa tehdä sama asia  :Laughing: 

----------

