Я начал изучать bash совсем недавно, и мне нужно найти количество команд из файла, файл можно скачать по этой ссылке.
Ниже образец
Я понимаю, что должен использовать cut и uniq, но не могу понять, как это сделать. Любая помощь приветствуется.
Я начал изучать bash совсем недавно, и мне нужно найти количество команд из файла, файл можно скачать по этой ссылке.
Ниже образец
Я понимаю, что должен использовать cut и uniq, но не могу понять, как это сделать. Любая помощь приветствуется.
Скажем, teamsfile
- это файл, содержащий данные, из которых нужно общее количество команд, затем
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
. они очень полезны в таких задачах.
grep
чтобы избежать печати первой строки.cat teamsfile | grep -v "Team" | cut -d "," -f2 | sort -u | wc -l
Вы можете просто использовать awk, чтобы напечатать всю команду, а затем найти количество.
grep -v "Team" teamsfile | awk -F',' '{print $2}' | sort -u | wc -l
Этот лайнер даст вам количество команд.
Объяснение ::
grep: выберет все строки, содержащие ключевое слово «Team».
awk: он разбивает строки на основе запятой и печатает 2-й столбец, который содержит названия команд.
sort -u: сначала сортирует все названия команд по алфавиту, а затем сохраняет только уникальные записи.
wc -l: он предоставит количество строк, в которых присутствуют данные, в приведенном выше случае количество уникальных имен команд.