【发布时间】:2021-07-22 23:36:53
【问题描述】:
我有一个包含以下内容的输入文件:
SS SC
a 1
b 2
d 5
f 7
我有一个输入 bash 数组如下:
echo "${input[*]}"
a b c d e f
我需要创建一个输出到:
1.在第一列中打印数组的所有元素
2. 在第二列中,我需要根据元素的存在打印 0 或 1。
为了解释这一点,在名为input 的输入数组中,我有a,b,c,d,e,f。现在a出现在输入文件中,所以输出应该是a 1,而c在输入文件中是缺失的,所以输出应该是c 0。
例如:预期结果:
SS RESULT
a 1
b 1
c 0
d 1
e 0
f 1
尝试对split bash 数组进行迭代以尝试对其进行迭代,但是它为每一行打印(awk 的工作方式),它变得难以处理。
awk -v par="${input[*]}" 'BEGIN{ n = split(par, a, " ")} {for(i=0;i
我能够(缺少标题)使用bash for 循环和一些grep 来执行此操作:但希望awk 会更短,因为我需要将它放在yaml 文件中所以需要保留很短。
for item in ${input[@]};do
if ! grep -qE "^${item}" input ;then
echo "$item 0";
else
echo "$item 1";
fi;
done
a 1
b 1
c 0
d 1
e 0
f 1
【问题讨论】: