Я создал сценарий при помощи командной строки первоначально:
grep -c "Author" reviews_folder/* | cut -d \/ -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'
Это работало, однако я затем должен был сделать это сценарием оболочки, который позволил пользователю вводить каталог для него для поиска, таким образом, я изменил его на:
grep -c "Author" $1/* | cut -d \/ -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'
После того, как это было завершено, а не работа сценария, она просто распечатала много пустых строк.
Я предполагаю, что Вы запускаете свой скрипт как: script.sh dir/
или bash script.sh dir/
.
Путем Вы передаете каталог, вызывает проблему.
В Вашем сценарии Вы получили a grep
команда:
grep -c "Author" $1/*
Если Вы передаете каталог с концом наклонной черты, grep
команда была бы выполнена как:
grep -c "Author" dir//*
Пример:
grep -c "Author" dir//somefile.dat dir//someother-file.dat
И его результат был бы подобен:
dir//somefile.dat:5
И Ваш cut
команда только возвратила бы пустую строку и передала бы ее sort
:
dir//somefile.dat:5 # < You are asking for second part which is empty
Таким образом, любой запускает Ваш скрипт как: script.sh dir
или измените его на что-то вроде этого:
#!/bin/bash
DIR=${1%/}
grep -c "Author" ${DIR}/* | cut -d \/ -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'