найти количество команд из файла

390
Raghav

Я начал изучать bash совсем недавно, и мне нужно найти количество команд из файла, файл можно скачать по этой ссылке .

Ниже образец

enter image description here

Я понимаю, что должен использовать cut и uniq, но не могу понять, как это сделать. Любая помощь приветствуется.

-1
Обратите внимание, что https://superuser.com не является бесплатным сервисом для написания скриптов / кодов. Если вы сообщите нам, что вы уже пробовали (включая скрипты / код, который вы уже используете) и где вы застряли, мы можем попытаться помочь с конкретными проблемами. Вам также следует прочитать [Как мне задать хороший вопрос?] (Https://superuser.com/help/how-to-ask). DavidPostill 6 лет назад 1

2 ответа на вопрос

3
C0deDaedalus

Скажем 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"
Вам не нужно cat, тогда grep - grep примет файл как вход Journeyman Geek 6 лет назад 0
@JourneymanGeek Пожалуйста, отредактируйте ответ, так как я не знаю, как сделать это напрямую с помощью `grep`. C0deDaedalus 6 лет назад 0
0
Vipul

Вы можете просто использовать awk, чтобы напечатать всю команду, а затем найти количество.

grep -v "Team" teamsfile | awk -F',' '' | sort -u | wc -l 

Этот лайнер даст вам количество команд.

Объяснение ::

grep: выберет все строки, содержащие ключевое слово «Team».

awk: он разбивает строки на основе запятой и печатает 2-й столбец, который содержит названия команд.

sort -u: сначала сортирует все названия команд по алфавиту, а затем сохраняет только уникальные записи.

wc -l: он предоставит количество строк, в которых присутствуют данные, в приведенном выше случае количество уникальных имен команд.

Может быть, приятно пройти через это - для тех людей, которые не понимают, что он делает. Кроме того ... вам не нужно кота и grep. Его кошка ругает. Вы можете grep -o teamfile -v .... Я думаю, Journeyman Geek 6 лет назад 0
Спасибо @JourneymanGeek за советы, чтобы я мог помочь другим лучше. Vipul 6 лет назад 0