在匹配模式之前打印单词

时间:2019-10-18 20:56:53

标签: linux shell unix awk

我试图在匹配模式之后仅打印第一个单词,但没有成功,请允许我向您解释我的要求

输入文件

 $>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

你能告诉我我做错了吗

2 个答案:

答案 0 :(得分:1)

能否请您尝试以下。尽管我怀疑您的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)

的操作

答案 1 :(得分:0)

在具有open-uri的行上打印第一个元素

secs

不推荐使用反引号`。使用delay_time=$(awk '/secs/{ print $1 }' abc.txt) 代替命令。