use*_*987 4 printing bash newline break
我需要分析(使用grep)并打印(使用某些格式)应用程序日志的内容。
该日志包含可变长度行的文本数据。我需要的是,经过一些 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
}
Run Code Online (Sandbox Code Playgroud)
怎么了?我知道我可以创建一个子字符串例程来完成此任务,但printf对于这样的事情应该很方便。
代替:
printf "\t%50s\n" "$line"
Run Code Online (Sandbox Code Playgroud)
使用
printf "\t%.50s\n" "$line"
Run Code Online (Sandbox Code Playgroud)
将行截断为仅 50 个字符。