У меня есть текстовый файл с кучей команд, например:Count и сортировать команды, используемые в истории
ls -l
/bin/bash/
cat file.txt
bash
cat somethingElse
Что я должен сделать, это, получить имена команд (ls
, cat
, bash
) и посчитай их. Я уже сделал это:
cut -d' ' -f1 file.txt | tr ' ' '\n' | sort | uniq -c
Это работает почти как я хотел бы - выход:
1 bash
1 /bin/bash
2 cat
1 ls
Единственное, здесь не так, он должен ИГНОРИРУЙТЕ Абсолютные пути, поэтому выход должен выглядеть следующим образом
2 bash
2 cat
1 cat
Я пытался с петлей в то время как с утверждением, если в нем, который проверяет, есть ли «/» в строке, но это не похоже на работу.
Спасибо, работает как задумано! Есть ли способ «переделать» вашу команду, поэтому она также принимает трубы как часть команды? Допустим, есть строка, которая содержит: cat file.txt | сортировать | uniq -c, и он также будет считать sort и uniq как команды, которые подсчитываются и печатаются в cmd? –
Возможно, вам стоит заменить трубы новыми строками: 'tr '|' '\ n' <файл' – fedorqui
awk '{system ("basename" $ 1)}' "$ {@: -1}" | tr '|' '\ n' <"$ {@: -1}" | сортировать | uniq -c Я пробовал вот так, но он просто удваивает выход. btw $ {@: -1} - последний аргумент, который является файлом. –