gpt4 book ai didi

shell - awk 与 printf 换行

转载 作者:行者123 更新时间:2023-12-01 10:36:14 24 4
gpt4 key购买 nike

我有一个简单的 shell 脚本,如下所示,我想在它返回的每一行之后放置一个换行符。

#!/bin/bash
vcount=`db2 connect to db_lexus > /dev/null; db2 list tablespaces | grep -i "Tablespace ID" | wc -l`
db2pd -d db_lexus -tablespaces | grep -i "Tablespace Statistics" -A $vcount | awk '{printf ($2 $7)}'

输出是:
Statistics:IdFreePgs0537610230083224460850d

我希望输出是这样的:
Statistics:
Id FreePgs
0 5376
1 0
2 3008
3 224
4 608
5 0

这可能与shell脚本有关吗?

最佳答案

您的问题可以简化为以下几点:

$ cat infile
11 12
21 22
$ awk '{ printf ($1 $2) }' infile
11122122
printf用于格式化打印。我什至不确定是否定义了上述用法的行为,但这不是它应该如何完成的。考虑:
$ awk '{ printf ("%d %d\n", $1, $2) }' infile
11 12
21 22
"%d %d\n"是一个描述如何格式化输出的表达式:“一个十进制整数,一个空格,一个十进制整数和一个换行符”,后面跟着数字, %d是。 printf非常灵活,见 manual它可以做什么。

在这种情况下,我们并不真正需要 printf 的力量。 ,我们可以使用 print :
$ awk '{ print $1, $2 }' infile
11 12
21 22

这将打印第一个和第二个字段,以空格 1 分隔 – 和 print确实在没有我们告知的情况下添加了换行符。

1更准确地说,“由输出字段分隔符的值分隔 OFS”,默认为空格并在我们使用 , 的任何地方打印在两个参数之间。忘记逗号是一个常见的错误,它会导致记录字段之间没有空格。

关于shell - awk 与 printf 换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34958948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com