Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: awk probleempje  (gelezen 3383 keer)

Offline BaukeP

  • Lid
awk probleempje
« Gepost op: 2021/05/17, 17:56:10 »
Hallo,
Ik heb een bestand met (bijna) alle dagen van de laatste jaren. Datum in veld 1 bv. 2017-05-17.
Ik zoek een snelle manier om van alle maanden en alle jaren het eerste record van de maand en het laatste record van de maand te krijgen.
Dus het gewenste resultaat moet worden:
2017-01-01 veld2 veld3
2017-01-31 veld2 veld3
2017-02-01 veld2 veld3
2017-02-28 veld2 veld3
etc.

Het zou toch met een redelijk eenvoudig awk script te doen moeten zijn, maar ik krijg het even niet voormekaar.
Graag wat hulp en uiteraard bij voorbaat dank

Bauke
« Laatst bewerkt op: 2021/05/17, 20:01:31 door BaukeP »

Offline bart85

  • Lid
Re: awk probleempje
« Reactie #1 Gepost op: 2021/05/17, 18:25:30 »
$2 is de tweede kolom, die na de datum komt.
$NF is de laatste kolom.

Als het zo niet werkt dan moet je de field separator aangeven.
« Laatst bewerkt op: 2021/05/17, 18:46:42 door bart85 »
Relying on complex tools to manage and build your system is going to hurt the end-users. [...] "If you try to hide the complexity of the system, you'll end up with a more complex system". Layers of abstraction that serve to hide internals are never a good thing. Instead, the internals should be designed in a way such that they NEED no hiding.

— Aaron Griffin

Offline BaukeP

  • Lid
Re: awk probleempje
« Reactie #2 Gepost op: 2021/05/17, 20:00:28 »
Niet duidelijk genoeg geweest begrijp ik.
De in het vorige bericht genoemde regels is het gewenste resultaat. Ik wil dus alle andere regels niet geselecteerd (geprint) hebben. En de selectie moet uiteraard op het eerste veld.
Hoe selecteer ik (liefst met awk) de gewenste regels?

Ik hoop dat dit helpt.
« Laatst bewerkt op: 2021/05/17, 20:26:03 door BaukeP »

Offline bart85

  • Lid
Re: awk probleempje
« Reactie #3 Gepost op: 2021/05/18, 12:46:28 »
Hier kun je een regex gebruiken.

Het volgende filtert alle data van de eerste van de maand:

grep '^[0-9]*-[0-9]*-01' textfile
Voor de laatste van de maand zul je hem moeten aanpassen.
« Laatst bewerkt op: 2021/05/18, 12:48:54 door bart85 »
Relying on complex tools to manage and build your system is going to hurt the end-users. [...] "If you try to hide the complexity of the system, you'll end up with a more complex system". Layers of abstraction that serve to hide internals are never a good thing. Instead, the internals should be designed in a way such that they NEED no hiding.

— Aaron Griffin

Offline BaukeP

  • Lid
Re: awk probleempje
« Reactie #4 Gepost op: 2021/05/18, 17:24:11 »
Dankjewel!

Offline bart85

  • Lid
Re: awk probleempje
« Reactie #5 Gepost op: 2021/05/18, 18:22:56 »
https://stackoverflow.com/questions/42950/how-to-get-the-last-day-of-the-month

Hier is wat te lezen over de laatste dag van de maand in python. Dat is toch wel moeilijker.
Relying on complex tools to manage and build your system is going to hurt the end-users. [...] "If you try to hide the complexity of the system, you'll end up with a more complex system". Layers of abstraction that serve to hide internals are never a good thing. Instead, the internals should be designed in a way such that they NEED no hiding.

— Aaron Griffin

Offline BaukeP

  • Lid
Re: awk probleempje
« Reactie #6 Gepost op: 2021/05/22, 22:54:30 »
Gevonden:

bash oneliner:
$(date -d "$date -1 days" +"%Y%m%d")                    geeft datum van gisteren
$(date --date '2021-03-01 -1 days' +"%Y%m%d")         geeft 20210228
$(date --date '2021-01-01 -1 days' +"%Y%m%d")         geeft 20201231