如何识别终端命令中的列名称

如何识别终端命令中的列名称

有时,从命令输出数据中选择/取消选择特定列很有用,但这些列并不总是在联机帮助页中按名称列出。我们怎样才能找到这些名字呢?

例如

运行两个命令来演示输出

$ sudo journalctl -eu NetworkManager -o short
Feb 06 06:52:56 user NetworkManager[713]: <info>  [1707206156.8193] device (tun0): state change: ip-check -> secondaries (reason 'none', sys-iface-state: 'external')
Feb 06 06:52:56 user NetworkManager[713]: <info>  [1707206156.8195] device (tun0): state change: secondaries -> activated (reason 'none', sys-iface-state: 'external')
Feb 06 06:52:56 user NetworkManager[713]: <info>  [1707206156.8207] device (tun0): Activation: successful, device activated.

此输出似乎包含 6 个不同的列(伪命名以突出显示)

日期、用户、进程、类型、日期2、消息

现在,如果我们运行第二个命令,lsblk我们可以看到列已经分配了名称。

$ lsblk
NAME                                          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
zram0                                         253:0    0   7.3G  0 disk  [SWAP]
nvme0n1                                       259:0    0 238.5G  0 disk

--output我们可以通过运行来选择我们需要的列columns

$ lsblk --output NAME,SIZE
NAME                                            SIZE
zram0                                           7.3G
nvme0n1                                       238.5G

man lsblk页面提供有关列的帮助,而许多其他命令不提供

 -o, --output list
              Specify which output columns to print.  Use --help to get a list of all supported columns.  The columns may affect tree-like output.  The default is to
              use tree for the column 'NAME' (see also --tree).

              The default list of columns may be extended if list is specified in the format +list (e.g., lsblk -o +UUID).

如果手册页中未列出,我们如何识别/命名列(即使我们无法选择/定位它)?

相关内容