我试图在匹配模式后只打印第一个单词但没有成功,让我向您解释我的要求是什么
输入文件
$>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)
不鼓励使用反引号 '。请改用$( ... )
进行命令替换。