Найти количество команд из файла
Я начал изучать bash совсем недавно, и мне нужно найти количество команд из файла, файл можно скачать по этой ссылке.
Ниже образец
Я понимаю, что я должен использовать cut и uniq, но я не могу понять, как. Любая помощь приветствуется.
2 ответа
Сказать teamsfile
это файл, содержащий данные, из которых вы хотите общее количество команд, то
1. используя cut
а также uniq
tail -n +2 teamsfile | cut -d "," -f2 | uniq | wc -l
tail -n +2 teamfile - печатает файл, но не печатает первую строку (которые в вашем случае являются метками значений)
cut -d "," -f2 - вырезать 2-е поле, разделенное запятой (действует как разделитель)
uniq - показывать только уникальные значения (Можно также использовать
sort -u
)wc -l - вывести количество строк в выводе
В качестве альтернативы вы можете использовать sed
а также awk
, они очень полезны в таких задачах.
2. Использование grep
чтобы избежать печати первой строки.
cat teamsfile | grep -v "Team" | cut -d "," -f2 | sort -u | wc -l
- grep -v - отменяет поиск строки " Team"
Вы можете просто использовать awk, чтобы напечатать всю команду, а затем найти количество.
grep -v "Team" teamsfile | awk -F',' '{print $2}' | sort -u | wc -l
Этот лайнер даст вам количество команд.
Объяснение::
grep: выберет все строки, содержащие ключевое слово "Team".
awk: он разбивает строки на основе запятой и печатает второй столбец, который содержит названия команд.
sort -u: сначала сортирует все названия команд по алфавиту, а затем сохраняет только уникальные записи.
wc -l: он предоставит количество строк, в которых присутствуют данные, в приведенном выше случае количество уникальных имен команд.