Bash脚本在匹配后打印单词

我正在尝试通过 bash 脚本检查时钟是否同步。

所以首先我执行了timedatectl输出以下内容的命令:

Local time: Mi 2021-03-17 12:52:53 CET
              Universal time: Mi 2021-03-17 11:52:53 UTC
                    RTC time: Mi 2021-03-17 11:52:53
                   Time zone: Europe/Berlin (CET, +0100)
   System clock synchronized: yes
   systemd-timesyncd.service active: yes
             RTC in local TZ: no

因此我们的目标是获得的价值System clock synchronizedyes,它分配给一个变量并打印。因此我做了以下工作:

1-# check if time synchronized
2-syncTime="$(timedatectl | grep 'System clock')" # returns the whole line
3-echo "$syncTime"# make sure the line is saved
4-ifTimeSynched="$( $syncTime | grep -oP 'synchronized: Kw+')"  # this supposes to save the word 
                                                                 after synchronized:  
echo "$ifTimeSynched"

第 4 行应该得到单词旁边的单词synchronized: 在这种情况下是yes但是,当我$ifTimeSynched如上所示打印时,它返回空行。

它没有抓住这个词的任何理由yes

预先感谢

回答

使用awk. 您需要System clock synchronized在命令的输出中搜索字符串timedatectl(作为输入传递给awk命令)并打印所需的列(字段),这是您案例中的最后一个字段。

ifTimeSynched=$(timedatectl | awk '/System clock synchronized/{print $NF}')
echo "$ifTimeSynched"

  • Thanks man. Your're really a gold mine

以上是Bash脚本在匹配后打印单词的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>