以表格格式记录到文件

以表格格式记录到文件

我正在尝试print通过脚本将某些内容写入文件,该脚本将作为邮件的附件发送。

现在我愿意在文件中保留正确的格式。我可以打印维护类似 html 表格的表格格式吗?

假设在循环中代码附加类似以下内容:

       `print "|App Name:$1\tRegion:$2\tEnvironment:$3| >> file_attch.dat`

现在参数大小可以变化,比如 $1 可以是 7-10 个字符,$2 是 5-15 个字符,$3 是 10-20 个字符。现在打印不同字符长度的连续行使附件看起来很奇怪。

我可以做一些事情,以 1 美元预订前 10 个字符,以 2 美元预订 15 个字符,然后以 3 美元预订 20 个字符。print可以达到目的的格式类型。

更新:

可能是我没有正确地提出问题。这是一个例子:

    App:PROPIA  Region:silo2   Env:INT
    App:SRO  Region:silo3   Env:SYS

在上述情况下,由于 PROPIA 和 SRO 随字符长度变化,因此不保留表格格式。我想要如下所示的东西:

    App:PROPIA  Region:silo2   Env:INT
    App:SRO     Region:silo3   Env:SYS

例如为第一个参数保留 10 个字符,为第二个参数保留接下来的 10 个字符,而不管实际字符的长度如何

答案1

printf 'App:%-10s\tRegion:%-15s\tEnv:%-20s\n' "$1" "$2" "$3"

这将为三个字符串保留 10、15 和 20 个字符,并且还会在该空间内左对齐字符串。

示例脚本:

set -- PROPIA silo2 INT SRO silo3 SYS
while [ "$#" -gt 0 ]; do
    printf 'App:%-10s\tRegion:%-15s\tEnv:%-20s\n' "$1" "$2" "$3"
    shift 3
done

输出:

App:PROPIA      Region:silo2            Env:INT
App:SRO         Region:silo3            Env:SYS

相关内容