2017-02-08 15 views
1

У меня есть файл, который имеет содержание, каккак подсчитать количество строк в текстовом файле, которые начинаются с датой

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

теперь я хочу, чтобы подсчитать количество строк, которые начинаются с датой в этом конкретный файл. Как я могу это сделать

, если я использую wc -l <file.txt>
это дает мне общее количество строк (5 в моем случае в то время как я хочу, граф должен быть 4)

+1

'grep '[0-9] \ {4 \} - [0-9] \ {2 \} - [0-9] \ {2 \}" filename | wc -l' должен указывать количество строк для этого конкретного формата. Однако с awk это может быть лучше. – acsrujan

ответ

0

Дано:

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

Сначала выясните, как запустить регулярное выражение для каждой строки файла. Предположим, вы используете sed, поскольку он довольно стандартный и быстрый.Вы можете также использовать awk, grep, bash, perl

Вот sed решение:

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

Затем труба, что wc:

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

Или, вы можете использовать один и тот же шаблон в awk и не нуждаются в использовании wc:

$ awk '/^[12][0-9]{3}-[0-9]{2}-[0-9]{2}/{lc++} END{ print lc }' file 
4 

Или же картина, с grep:

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

(Примечание: не ясно, если ваш формат даты YYYY-MM-DD или YYYY-DD-MM Вы можете сделать модель более конкретным, если это известно.)

0

Легкий и простой способ с: Perl

файл

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

вам нужно
perl -lne ' ++$n if /^\d+-\d+-\d+/; print $n' your-file

выход

1 
2 
2 
3 
3 
4 
5 

Граф и только сумма печати
perl -lne ' ++$n if /^\d+-\d+-\d+/ ;END{ print $n}' your-file

выход
5


с-c задать расширенное подсчитывать число матчей
cat your-file | egrep -c '^[0-9]+-[0-9]+-[0-9]+'

выход
5