我正在尝试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