小编use*_*987的帖子

如何以固定长度块打印可变长度行?

我需要分析(使用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对于这样的事情应该很方便。

printing bash newline break

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

bash ×1

break ×1

newline ×1

printing ×1