首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >即使找不到模式也要转义序列

即使找不到模式也要转义序列
EN

Stack Overflow用户
提问于 2017-08-08 13:02:00
回答 1查看 67关注 0票数 1

我一直很高兴地使用下面的代码从我的文件中获取数据

代码语言:javascript
运行
复制
for i in 16 32 64
do
   size=$i
   printf "%d " ${size}
   awk -v pat="$size" '$0 ~ pat {printf "%f \n",$5}' $file
done

但是,我注意到,如果没有找到$5\n就不会被打印出来,而且我希望有一个转义序列,即使找不到$5。一个输入示例将是

代码语言:javascript
运行
复制
 #bytes #repetitions  t_min[usec]  t_max[usec]  t_avg[usec]
            0         1000         0.04         0.09         0.06
            1         1000         0.15         1.22         0.47
            2         1000         0.16         1.25         0.49
            4         1000         0.16         1.25         0.47
            8         1000         0.16         1.30         0.49
           16         1000         0.16         1.33         0.51
           32         1000         0.17         1.40         0.53
           64         1000         0.19         1.43         0.54
          128         1000         0.18         1.56         0.59
          256         1000         0.27         1.72         0.68
          512         1000         0.25         1.91         0.73
         1024         1000         0.32         2.53         0.90
         2048         1000         0.38         3.98         1.42

找到$5时的输出示例如下所示:

代码语言:javascript
运行
复制
16 0.51
32 0.53
64 0.54

如果$5中的一个值不存在(例如32个),我希望看到

代码语言:javascript
运行
复制
16 0.51
32 
64 0.54
EN

Stack Overflow用户

回答已采纳

发布于 2017-08-08 13:57:54

保持简单、高效和健壮--丢弃shell循环,只需使用:

代码语言:javascript
运行
复制
awk -v r='16 32 64' '
BEGIN {
    split(r,tmp)
    for (i in tmp) {
        reps[tmp[i]]
    }
}
$1 in reps { print $1, $5 }
' "$file"
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45569107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档