linux - 打印带有列号的页脚

标签 linux shell awk count

我发现这个命令 {print NF} 显示总列数:

$ nova list | awk '{print NF}' | sort -n | uniq
1
9
10

但我希望为每一列打印他们的编号。

请参阅带有字段分隔符 | 的示例:

$ nova list | head
+--------------------------------------+-----------------------------------------+--------+----------------------------------------------+
| ID                                   | Name                                    | Status | Networks                                     |
+--------------------------------------+-----------------------------------------+--------+----------------------------------------------+
| 45bd0bc3-96b4-4193-ae76-59115b4ee528 | rert                                    | ACTIVE | netblock5=192.168.0.10                 |
| 6682aa37-b766-437e-9b16-ce1076ce2410 | test5                                   | ACTIVE | netblock5=192.168.0.110                |
| 6f08fcf3-ea71-4f33-a01a-9b0712385511 | test2                                   | ACTIVE | netblock5=192.168.0.111                |
| 8f628408-1ace-4792-85b6-e134fe1f07cb | test55                                  | ACTIVE | netblock5=192.168.0.52, 192.168.222.46 |
| 458aa8cb-42c2-4aa6-ab30-c6858bcd85f3 | derggdre                                | ACTIVE | netblock5=192.168.0.63, 192.168.222.49 |
| 67f4bd0c-0e4d-4ba1-8765-dc7d7831c8f8 | dgrfdrf                                 | ACTIVE | netblock5=192.168.1.86                 |
| 846ffa7d-76a4-4c70-8d82-23b5a205ad77 | ttttt                                   | ACTIVE | netblock5=192.168.1.27                 |
  1                                     2                                          3        4

最佳答案

让我们了解 awk 在这里做了什么

nova list | awk '{print NF}' | sort -n | uniq

在 awk '{printf NF}' 中,NF 是字段分隔符作为空格的字段数。所以在 NF=9 以下的输出中(也计算管道 '|' 符号)。

| ID                                   | Name                                    | Status   | Networks                                     |

下面的数据线也是如此

| 846ffa7d-76a4-4c70-8d82-23b5a205ad77 | ttttt                                   | ACTIVE | netblock5=192.168.1.27                 |

在您的输出中,您得到 1 和 10,而且 nova list 命令输出中的某些行必须具有单个字段或 10 个字段。

现在谈到您的问题,您希望打印字段及其 NF 或字段值及其 NF 值。

nova list | awk '{for(I=1;I<=NF;I++){printf I"-"$I" "}printf "\n"}'

它不会打印文件最后的字段编号,而是打印数据。

关于linux - 打印带有列号的页脚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31695219/

相关文章:

正则表达式:在多行上使用 sed 提取两个字符串之间的内容

linux - 如何向运行脚本后出现的辅助提示提供输入

mysql - 如何进行低 RAM 完全交叉连接?

windows - NodeJS 可以自己重启吗?

java - 如何为 Hadoop 2 构建 native 库

linux - linux 调度程序中上下文切换的基准

php - 带计数的 mysql 汇总

shell - Tmux 将窗口重命名为当前目录

linux - 如何在 shell 中创建一个包含多列的循环?

regex - 如果换行符后跟一个字符串,则删除换行符 (\n) - 使用 SED