BASH拆分一个字符串并返回该单词之前的所有文本



我有一种情况,我有一个字符串,其中包括我需要获得的信息,然后是一个我想消除的警告:

Time Sync Status:       Local time: Mon 2020-04-06 19:25:43 EDT
Universal time: Mon 2020-04-06 23:25:43 UTC
RTC time: n/a
Time zone: America/New_York (EDT, -0400)
Network time on: no
NTP synchronized: no
RTC in local TZ: yes

Warning: This mode can not be fully supported. It will create various problems
with time zone changes and daylight saving time adjustments. The RTC
time is never updated, it relies on external facilities to maintain it.
If at all possible, use RTC in UTC by calling
'timedatectl set-local-rtc 0'.

因此,我试图在"警告"上拆分字符串,并在此之前获取文本。。。但我尝试了很多东西,但都不起作用:

echo Time Sync Status: "$(timedatectl status | awk -F 'Warning' '{print $1}')"

我怎样才能做到这一点?

TIARon

请您尝试以下操作。

awk '/Warning/{exit} 1' Input_file

echo "$string" | awk '/Warning/{exit} 1'

解释:只需查找单词Warning,一旦出现,只需退出程序即可。在此之前,它将打印每一行。



第二个解决方案:如果您想要单词Warning之前的所有行,并且也想保留空行,请尝试以下操作。

awk '/Warning/{exit};NF' Input_file

echo "$string" | awk '/Warning/{exit};NF'


第三种解决方案:如果OP只想以他/她的风格行事,那么就试试(用GNUawk测试和编写(。我们需要设置记录分隔符以使FS在这里工作。

awk -v RS="" -v FS="Warning" '{print $1}'  Input_file

echo "$string" | awk -v RS="" -v FS="Warning" '{print $1}'

最新更新