/ / Grep в Unix + як у SQL + groupby в SQL - linux, unix, search, awk, grep

Grep в Unix +, як у SQL + групі в SQL - linux, unix, пошук, awk, grep

Що у мене є у файлі, так і є

112}2014-03-02}ABC
112}2014-02-02}ABC
112}}ABC
112}2014-03-02}ABC
112}2013-03-02}ABC
112}2013-02-02}ABC
112}2013-03-02}ABC

Мені потрібно поздоровитись і побачити щось подібне як вихід і шукати один вкладиш (кращий варіант)

2014-03-02 2
2014-02-02 1
1
2013-03-02 2
2013-02-02 1

Я знайшов це питання але це не відповідає моєму призначенню.

Я також спробував щось подібне, але не пощастило

grep -ioh "2014" file.txt | sort | uniq -c
grep -ioh "2013" file.txt | sort | uniq -c

Відповіді:

3 для відповіді № 1

Це awk може зробити:

awk -F} "{a[$2]++} END {for (i in a) printf "%-10s %sn",i,a[i]}" file
1
2013-02-02 1
2014-02-02 1
2014-03-02 2
2013-03-02 2

1 для відповіді № 2

Ось як ви могли це зробити egrep:

egrep -o "[0-9]{4}-[0-9]{2}-[0-9]{2}" file.txt | sort | uniq -c

Вихід:

1 2013-02-02
2 2013-03-02
1 2014-02-02
2 2014-03-02

Редагувати

Щоб також порахувати рядки без дати на них, ви можете підійти до нього аналогічно до відповіді @Jotnes:

grep -o "}[^}]*}" | tr -d "}" | sort | uniq -c

Вихід:

1
1 2013-02-02
2 2013-03-02
1 2014-02-02
2 2014-03-02