2017-02-08 2 views
1

Ich habe eine Datei, die den Inhalt als, wie die Anzahl der Zeilen in einer Textdatei zu zählen, die mit einem Startdatum

2004-10-07  cva  create file ... 
2003-11-11  cva  create version ... 
2003-11-11  cva  create version ... 
2003-11-11  cva  create branch ... 

hat jetzt mag ich die Anzahl der Zeilen zählen, das in diesem mit Datum beginnen bestimmte Datei. Wie kann ich tun, dass

wenn ich wc -l <file.txt>
verwenden gibt es mir Gesamtanzahl der Zeilen (5 in meinem Fall, während ich Zählung will, sollte 4 sein ist)

+1

'grep" [0-9] \ {4 \} - [0-9] \ {2 \} - [0-9] \ {2 \} "Dateiname | wc -l sollte die Anzahl der Zeilen für dieses spezielle Format angeben. Mit awk kann es jedoch besser gehen. – acsrujan

Antwort

0

Gegeben:

$ cat file 
2004-10-07  cva  create file ... 
no date 
2003-11-11  cva  create version ... 
no date 
2003-11-11  cva  create version ... 
no date 
2003-11-11  cva  create branch ... 

Zuerst herausfinden, wie Sie eine Regex auf jeder Zeile der Datei ausführen. Angenommen, Sie verwenden sed, da es ziemlich Standard und schnell ist.Sie könnten auch awk, grep, bash verwenden perl

Hier ist eine sed Lösung:

$ sed -nE '/^[12][0-9]{3}-[0-9]{2}-[0-9]{2}/p' file 
2004-10-07  cva  create file ... 
2003-11-11  cva  create version ... 
2003-11-11  cva  create version ... 
2003-11-11  cva  create branch ... 

Dann Rohr, das zu wc:

$ sed -nE '/^[12][0-9]{3}-[0-9]{2}-[0-9]{2}/p' file | wc -l 
     4 

Alternativ können Sie das gleiche Muster verwenden, in awk und nicht wc verwenden:

Oder gleiches Muster, mit grep:

$ grep -cE '^[12][0-9]{3}-[0-9]{2}-[0-9]{2}' file 
4 

(Anmerkung: Es ist unklar, ob Ihr Datumsformat YYYY-MM-DD ist oder YYYY-DD-MM Sie das Muster spezifische mehr machen können, wenn dies bekannt ist.)

0

eine einfache und einfache Art und Weise: Perl

Dateien

2004-10-07  cva 
2004-10-04    
anything 
2004-10-07  cva 
anything 
2004-10-07  cva 
2004-10-07  cva 

Sie benötigen
perl -lne ' ++$n if /^\d+-\d+-\d+/; print $n' your-file

Ausgang

1 
2 
2 
3 
3 
4 
5 

Graf und nur Druck Summe
perl -lne ' ++$n if /^\d+-\d+-\d+/ ;END{ print $n}' your-file

Ausgang
5


mit egrep-c zählen die Spiel Zahlen
cat your-file | egrep -c '^[0-9]+-[0-9]+-[0-9]+'

Ausgang
5

Verwandte Themen