You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用bash或awk实现基于数组内容的条件打印

简洁awk实现方案

直接使用如下一行awk命令即可满足需求:

awk -v par="${input[*]}" 'BEGIN{split(par, arr, " ")} NR>1 {exist[$1]=1} END{print "SS RESULT"; for(i=1;i<=length(arr);i++) print arr[i], (arr[i] in exist ? 1 : 0)}' input

逻辑说明

  • 用-v par="${input[*]}"将bash数组整体作为参数传入awk
  • BEGIN块中把传入的参数字符串按空格拆分,存为awk内部数组arr
  • 逐行读取输入文件时跳过表头行,将第一列的键存入exist数组做存在性标记
  • 输入文件读取完成后进入END块,先打印要求的表头,再遍历arr数组的所有元素,判断元素是否在exist数组中,输出对应的1/0标记

这个实现只需要读取一次输入文件,相比循环调用grep的方案效率更高,代码也更紧凑,适合放到yaml配置中使用。

内容的提问来源于stack exchange,提问作者monk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 08:45:03