#bash #loops #while-loop #grep #find
#bash #циклы #цикл while #grep #Найти
Вопрос:
Я пытаюсь найти, вызываются ли некоторые классы Java в списке файлов сценариев, которые на самом деле вызываются в планировщике.
while read j; do
while read b; do
#Read through job files
if [ $(cat crontab.now *.sh | grep -c ./$b) == "1" ] ; then
echo -e $j: $(cat $b | grep -c .$j) >> bash_output.txt
fi
done <UsedBash.txt
done <java_file_names.txt
Я хочу искать только имена файлов Java в скриптах, которые найдены хотя бы один раз в планировщике. Есть ли более эффективный способ сделать это без вложенных циклов while? Также я не думаю, что мой оператор if работает. Спасибо.
Комментарии:
1. Можете ли вы предоставить немного примеров ввода из соответствующих файлов?
2. Разобрался. В любом случае спасибо. Входные данные — это просто имена файлов, разделенные новыми строками.
Ответ №1:
Я не знаю, как вы действительно хотите это сделать, но, возможно, попробуйте это:
while read j; do
while read b; do
[[ $(exec grep -c "/$b" crontab.now *.sh) -ge 1 ]] amp;amp;
echo -e "$j: $(exec grep -c ".$j" "$b")" >> bash_output.txt
done < UsedBash.txt
done < java_file_names.txt
Комментарии:
1. Исправлен код. В итоге imporvin на порядок меньше. Я разместил готовый код сверху. Спасибо за вашу помощь.
2. @HarishV Вы должны опубликовать готовый код в качестве ответа и принять его.
Ответ №2:
ОТВЕТИТЬ:
input=$(cat UsedBash.txt | tr 'n' ' ')
while read j; do
j=$(echo $j | sed -e 's/r//g')
#Read through job files
echo $j: $(cat $input | grep -c $j) >> bash_output.txt
done <java_file_names.txt