2017-10-14 8 views
0

Hallo Ich versuche ein Skript zu machen, um nach bestimmten Informationen aus einer Datei zu suchen und sie zu drucken. Mein Fall ist dies: Ich habe eine Datei im Format: id|lastname|firstname|birthday|. Ich möchte das Skript aufrufen und ein Datumsargument und die Datei angeben, damit es mir alle "Leute" zeigt, die nach dem angegebenen Datum geboren wurden. Lassen Sie mich Ihnen meinen Code:Vergleichen von Daten in awk Shell

#!/bin/bash 
case $1 in 
--born-since) 
d=($2 +%F); # this one puts the date I've given into the variable d 
grep -vE '^#' $4 | awk -F "|" ' $4 >= $d ' 
;; 
esac 

Ich nenne dieses Skript in Form von:

./script --born-since <date> -f <file> 

Punkt ist es nicht tut, was ich will es tun. Ich drucke falsche Ergebnisse. Zum Beispiel in einer Datei mit 4 Daten (1989-12-03,1984-02-18,1988-10-14,1980-02-02), mit dem Datum von 1985-05-13 druckt es nur die Person mit Datum 1984-02-18 was falsch ist. Es ist wahrscheinlich etwas anderes und nicht das Datum zu vergleichen. Irgendein Rat ?

+0

ja mein schlecht, es ist falsch, es ist einfach zu viele unterschiedliche Ergebnisse aus verschiedenen Einträgen, daher habe ich ein wenig verwirrt, Bearbeitung –

+0

Post ein paar Eingangsleitungen werden alle Felder – RomanPerekhrest

Antwort

0

Mit einzelnen awk Prozess:

awk -v d="1985-09-09" -F'|' '$4 >= d' file 
+0

Dies funktioniert, obwohl für Termine gleich ist es nicht. Danke aber, da ich das ausprobieren kann! Ist es möglich, für mehr und weniger (für 2 verschiedene Daten natürlich) in einem einzigen Befehl zu vergleichen?) –

+0

@DitrisDelis, ja, es ist möglich – RomanPerekhrest