我有一个shell脚本,可以在文件中写入一些数据。我想在文件中打印实际数据之前添加标题"Instance Details"
,该标题应居中对齐。
我试过这段代码:
out="Instances_$today_date"
awk -F'\t' -v of="$out" '
# (input and other code omitted...)
BEGIN { # Set the printf() format string for the header and the data lines.
fmt = "%-12s %-33s %-15s %s\n"
# Print the header
printf("Instance Details") > of
printf(fmt, "Instance id", "Name", "Owner", "Cost.centre") > of
}'
但执行此代码后我得到的输出:
Instance DetailsInstance id Name Owner Cost.centre
预期输出:
Instance Details
Instance id Name Owner Cost.centre
任何领导都非常感谢。
答案 0 :(得分:2)
尝试以下方法:
awk -F'\t' -v of="$out" '
# (input and other code omitted...)
BEGIN { # Set the printf() format string for the header and the data lines.
# Print the header
headerText="Instance Details"
headerMaxLen=74
padding=(length(headerText) - headerMaxLen) / 2
printf("%" padding "s" "%s" "%" padding "s" "\n\n\n", "", headerText, "") > of
fmt="%-12s %-33s %-15s %s\n"
printf(fmt, "Instance id", "Name", "Owner", "Cost.centre") >> of
}'
of
传递输出文件的名称。Instance Details
两侧的必要填充,使其显示在输出行的中心位置(从最终输出行的长度导出的行长度)。Instance Details
以创建所需的空行。printf
语句是否使用> of
或>> of
并不重要 - 在任何情况下,文件都附加 to。)