Bash 指包含按列计算值的行

Bash 指包含按列计算值的行,bash,awk,Bash,Awk,对于所选的模式,我只想打印具有最小值的行,这些行对应于第7、8和9列的平方和(如下面的脚本,我以$script.sh patterns.txt的形式运行)。我的脚本打印特定模式的最后一行,我只想打印包含最小值的行。我怎么能提到那句话 下面是输入和期望的输出 while IFS='' read -r line || [[ -n "$line" ]]; do grep -E -wr $line input.txt| awk '{ min=($7^2)+($8^2)+($9^2);} FNR==NR

对于所选的模式,我只想打印具有最小值的行,这些行对应于第7、8和9列的平方和(如下面的脚本,我以$script.sh patterns.txt的形式运行)。我的脚本打印特定模式的最后一行,我只想打印包含最小值的行。我怎么能提到那句话

下面是输入和期望的输出

while IFS='' read -r line || [[ -n "$line" ]]; do
grep -E -wr $line input.txt| awk '{ min=($7^2)+($8^2)+($9^2);} FNR==NR  {if (($7^2)+($8^2)+($9^2)<=min) min=($7^2)+($8^2)+($9^2);} END {print $0}' >> output.txt
done < "$1"
输出

-3.79 43 18.6279 16.5936 -1.33 CAN  1 10 100  
10.51 -66 1.71937 -9.93556 1.21 CAS 4 40 400  
-9.41 38 17.751 16.7401 -0.25 CASC  12 20 400

awk
救援

awk                     '{v=$7^2 + $8^2 + $9^2} 
  !($6 in a) ||  v<a[$6] {a[$6]=v; line[$6]=$0} 
  END                    {for(k in line) print line[k]}' file


-3.79 43 18.6279 16.5936 -1.33 CAN  1 10 100
10.51 -66 1.71937 -9.93556 1.21 CAS 4 40 400
-9.41 38 17.751 16.7401 -0.25 CASC  12 20 400
awk'{v=$7^2+$8^2+$9^2}

!(一年6美元)| | v
awk
救命

awk                     '{v=$7^2 + $8^2 + $9^2} 
  !($6 in a) ||  v<a[$6] {a[$6]=v; line[$6]=$0} 
  END                    {for(k in line) print line[k]}' file


-3.79 43 18.6279 16.5936 -1.33 CAN  1 10 100
10.51 -66 1.71937 -9.93556 1.21 CAS 4 40 400
-9.41 38 17.751 16.7401 -0.25 CASC  12 20 400
awk'{v=$7^2+$8^2+$9^2}

!(a中的$6)| | v您的要求不明确,部分
仅包含列7、8和9的最小和的行
对不起,我只是想让算术运算听起来更简单,因为精确的数学运算很容易更改。我现在编辑了这个问题。但是预期的结果仍然不清楚。你如何推导它们?你能解释一下输出中的每一行吗?根据什么?选择精确的值和精确的条件,如上面的脚本所示,min=(7^2)+(8^2)+(9^2)。仅选择具有相同列$5的行,因为这是为包含CAN的所有行计算grep(例如最小值)的模式,并给出第一行输出。由于您仍在使用
awk
,请使用awk读取数据并执行正则表达式。simpler您的要求不明确,
部分仅包含列7、8和9的最小和的行
对不起,我只是想让算术运算听起来更简单,因为精确的数学运算很容易更改。我现在编辑了这个问题。但是预期的结果仍然不清楚。你如何推导它们?你能解释一下输出中的每一行吗?根据什么?选择精确的值和精确的条件,如上面的脚本所示,min=(7^2)+(8^2)+(9^2)。仅选择具有相同列$5的行,因为这是为包含CAN的所有行计算grep(例如最小值)的模式,并给出第一行输出。由于您仍在使用
awk
,请使用awk读取数据并执行正则表达式。SimpleThanks,但我需要最小值,在这种情况下,无法使用默认值0,因此我不知道如何修改此脚本以提供最小值。现在已修复,很抱歉一开始没有注意到。这一切都正常,我只是想了解它。所以vThanks,但我需要最小值,在这种情况下,无法使用默认值0,因此我不知道如何修改此脚本以提供最小值。现在已修复,很抱歉一开始没有注意。这一切都正常,我只是想了解它。所以v