当前位置: 首页>>技术教程>>正文


如何从终端输出中仅检索所需的行?

,

问题描述

我只想得到 df -h 输出的第三行。

我应该使用什么样的命令?

最佳办法

这将输出第三行,无论内容如何。

df -h | sed -n 3p

次佳办法

df 命令实际上接受一个标识所需文件系统的参数。因此,您可以使用 df /homedf /dev/sda3 等。

如果您打算解析脚本的输出,则需要使用 df -P 来保证它永远不会换行为多行。因此,例如,您可以使用 df -Ph /home | tail -n +2 (但如果您正在解析脚本的输出,请注意文件名中可能包含空格)

第三种办法

您可以使用 headtail 的组合:

df -h | head -3 | tail -1

或者

df -h | tail -n +3 | head -1

但请注意,df 允许过滤 df 本身选项的输出,您应该在使用任何外部命令之前先查看这些选项。

检查 man df

第四种办法

Awk 是文本处理工具,因此适合此任务

df -h | awk 'NR == 3'

第五种办法

我假设您不一定要寻找第三行,而是寻找提到特定磁盘(例如 /dev/sda3 )或特定安装点(例如 /home )的行。

因此,您可以按内容过滤输出并仅显示与特定模式匹配或包含关键字的行,而不是仅显示第三行(这是不安全的,因为输出顺序可能会更改并且您可能会得到不同的结果)。

您的工具是 grep

例如,如果您想要有关设备 /dev/sda3 的行,请键入:

df -h | grep '/dev/sda3'

如果您希望该行提及您的主目录作为安装点,请使用:

df -h | grep '/home'

第六种办法

您还可以使用 perl

df -h | perl -ne 'print if $.==3' 

$. 是当前行号,因此您可以使用 perl -ne 'print if $.==N' 打印第 N 行。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/14409.html,未经允许,请勿转载。