Nieuws:

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

Auteur Topic: awk probleempje  (gelezen 864 keer)

Offline BaukeP

  • Lid
  • Steunpunt: Nee
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
  • Steunpunt: Nee
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 »
Als Linux niet goed genoeg vind, verander de source code.

Offline BaukeP

  • Lid
  • Steunpunt: Nee
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
  • Steunpunt: Nee
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 »
Als Linux niet goed genoeg vind, verander de source code.

Offline BaukeP

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

Offline bart85

  • Lid
  • Steunpunt: Nee
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.
Als Linux niet goed genoeg vind, verander de source code.

Offline BaukeP

  • Lid
  • Steunpunt: Nee
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