我有这个矩阵:
{{1,4},{6,8}}
我想从第一个值中减去第二个值,例如: 4-1和8-6,然后将两者进行比较,并显示两者的最小值,在本例中: 8-6=2
所有这一切都是在终端中使用AWK
发布于 2017-10-18 16:47:38
你似乎有点困惑,不知道是从第二个减去第一个,还是从第一个减去第二个。另外,关于您的数据是在文件中还是在变量中。然而,这应该会让你开始...
如果我们用空格替换任何大括号或逗号:
echo "{{1,4},{6,8}}" | awk '{gsub(/[{},]/," "); print}'
1 4 6 8
现在,我们可以通过$4
以$1
身份访问这些字段,并执行您想要的操作:
echo "{{1,4},{6,8}}" | awk '{gsub(/[{},]/," "); x=$2-$1; y=$4-$3; if(x<y)print x; else print y}'
2
作为@3161993在评论中建议的更优雅的替代方案,您可以将字段分隔符设置为一个或多个左或右大括号或逗号,如下所示:
awk -F '[,{}]+' '{x=$3-$2; y=$5-$4; if(x<y) print x; else print y}' <<< "{{1,4},{6,8}}"
2
而且,正如@EdMorton友好地指出的那样,使用像这样的三元运算符可以让它变得更简洁:
awk -F '[,{}]+' '{x=$3-$2; y=$5-$4; print (x<y ? x : y)}' <<< "{{1,4},{6,8}}"
https://stackoverflow.com/questions/46803594
复制相似问题