我发现这个命令 {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/