如何在bash脚本中选择一行的最后一个数字

Tim*_*Tim 2 grep shell-script text-processing

我有 smartctl -a 命令的输出;其中一行如下所示:

9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 301
Run Code Online (Sandbox Code Playgroud)

我已将其放入我的 bash 脚本中的一个变量中(如果这是正确的术语),如下所示:

$SMARTCTL_OUTPUT=`smartctl -a /dev/sda`
Run Code Online (Sandbox Code Playgroud)

我想对此进行解析,以便仅将行尾的数字返回给变量,因此在上面的示例中将其301放入变量中$POWER_ON_HOURS。

我试过使用 grep:

$SMARTCTL_OUTPUT=`smartctl -a /dev/sda | grep "Power_On_Hours"`
Run Code Online (Sandbox Code Playgroud)

但这会返回9 Power_On_Hours 0x0032 100 100 000 Old_age Always -我不感兴趣的其他文本 ( )。

我可以只返回行尾的数字吗?

vfb*_*lva 5

使用awk '{print $NF}' 就能解决问题。$NF指的是最后一个字段。awk是一种用于数据提取的语言。

一个 AWK 程序是一系列模式动作对,写成:

''条件'' { ''动作'' }

awk '{print $NF}'  
Run Code Online (Sandbox Code Playgroud)

将始终打印最后一个字段。