grep 并乘以某些列

grep 并乘以某些列

在一个文件中,我有一个特定的结构:

------------------------------
|  1   123.456    789.1011 T |
|  2   789.123    234.1234 T |
------------------------------
 All true

我可以

grep -s -B 3 "All true" file.out | head -n 2

仅获取相关行

|  1   123.456    789.1011 T |
|  2   789.123    234.1234 T |

我现在如何继续获取变量中的第一个数字(123.456789.123),但乘以某个值x

有没有办法获得ngrep 行的第 'th 参数或其他东西?

答案1

短的grep+awk方法:

比方说,乘数是3

grep -sB 3 "All true" file.out | awk -v x=3 '$1=="|"{ print $3*x }'

输出:

370.368
2367.37

  • -v x=3- 将乘数作为x变量传递给awk脚本

答案2

感谢@Philippos,我设法得到了答案:

number=$(grep -s -B 3 "All true" file.out | head -n 2 | cut -d' ' -f6 )

for i in ${number}
do
  echo "$i*$x" | bc -l
done

相关内容