Чтобы отфильтровать дубликаты, возьмите выходные данные и пройдите через: sort | uniq
. Таким образом:
svn log --quiet | grep "^r" | awk '{print $3}' | sort | uniq
Я не удивлюсь, если это способ сделать то, что вы просите. Инструменты Unix часто ожидают, что пользователь выполнит сложную обработку и анализ с другими инструментами.
P.S. Если подумать, вы можете объединить grep
и awk
...
svn log --quiet | awk '/^r/ {print $3}' | sort | uniq
P.P.S. Пер Кевин Рейд ...
svn log --quiet | awk '/^r/ {print $3}' | sort -u
P 3 .S. Для правильной обработки имен с пробелами, используя вертикальные черты вместо пробелов в качестве разделителей полей (также обновлены примеры Python) ...
svn log --quiet | awk -F ' \\\\|' '/^r/ {print $2}' | sort -u
Для большей эффективности вы могли бы сделать Perl однострочным. Я не очень хорошо знаю Perl, так что я бы закончил делать это на Python:
#!/usr/bin/env python
import sys
authors = set()
for line in sys.stdin:
if line[0] == 'r':
authors.add(line.split('|')[1].strip())
for author in sorted(authors):
print(author)
Или, если хотите, подсчитайте:
#!/usr/bin/env python
from __future__ import print_function # Python 2.6/2.7
import sys
authors = {}
for line in sys.stdin:
if line[0] != 'r':
continue
author = line.split('|')[1].strip()
authors.setdefault(author, 0)
authors[author] += 1
for author in sorted(authors):
print(author, authors[author])
Тогда вы запустите:
svn log --quiet | ./authorfilter.py