转义序列,即使没有找到模式

Escape sequence even if pattern not found

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

for i in 16 32 64
do
   size=$i
   printf "%d " ${size}
   awk -v pat="$size" '[=10=] ~ pat {printf "%f \n",}' $file
done

但是我注意到,如果 </code> 没有被找到,<code>\n 就不会被打印出来,即使 </code> 没有被找到,我也想要一个转义序列。 输入示例为 </p> <pre><code> #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

找到 </code> 时的输出示例如下所示:</p> <pre><code>16 0.51 32 0.53 64 0.54

如果 </code> 中的值之一不存在(例如 32),我想查看 </p> <pre><code>16 0.51 32 64 0.54

保持简单、高效和健壮 - 扔掉你的 shell 循环,只使用:

awk -v r='16 32 64' '
BEGIN {
    split(r,tmp)
    for (i in tmp) {
        reps[tmp[i]]
    }
}
 in reps { print ,  }
' "$file"