在匹配模式之前打印单词



我试图在匹配模式后只打印第一个单词但没有成功,让我向您解释我的要求是什么

输入文件

$>cat abc.txt
source: hrs1bdapoc2:21002
1571426725 secs (436507.42 hrs) behind the primary

期望输出:-

echo $delay_time
1571426725

到目前为止,我尝试使用awk命令:-

$>delay_time=`awk -F'secs' '{print $1}' abc.txt`
$>echo $delay_time
source: hrs1bdapoc2:21002 1571426725

你能让我知道我做错了什么吗

你能试试下面吗?虽然我怀疑你的Input_file因为你展示的代码应该可以解决。

awk 'match($0,/[0-9]+ secs/){print substr($0,RSTART+5,RLENGTH-5)}' Input_file

还要通过执行cat -v Input_file来检查您的Input_file是否具有控制 M 字符,如果是,那么您可以通过执行tr -d 'r' Input_file > temp && mv temp Input_file来删除它们

同样要创建一个变量,请执行类似var=$(above command)

打印行上具有secs的第一个元素

delay_time=$(awk '/secs/{ print $1 }' abc.txt)

不鼓励使用反引号 '。请改用$( ... )进行命令替换。

最新更新