Мне нужно проанализировать (с grep
) и распечатать (с некоторым форматированием) содержимое журнала приложения.
Этот журнал содержит текстовые данные в строках переменной длины.Что мне нужно, так это после того, как мы поработаем, зациклим каждую строку этого вывода и распечатаем ее с максимальной фиксированной длиной 50 символов.Если строка длиннее 50 символов, она должна напечатать новую строку, а затем продолжить с остальными в следующей строке и т. Д., Пока строка не будет завершена.
Я пытался использовать printf
, чтобы сделать это,но это не работает, и я не знаю почему.Он просто выводит строки в том же порядке, что и echo
, без учета формата printf
, хотя работает символ (вкладка) \t
.
function printContext
{
str="$1"
log="$2"
tmp="/tmp/deluge/$$"
rm -f $tmp
echo ""
echo -e "\tLog entries for $str :"
ln=$(grep -F "$str" "$log" &> "$tmp" ; cat "$tmp" | wc -l)
if [ $ln -gt 0 ];
then
while read line
do
printf "\t%50s\n" "$line"
done < $tmp
fi
}
Что не так?Я знаю, что могу выполнить подпрограмму для выполнения этой задачи, но printf
должен пригодиться для подобных вещей.