计算两个文件中的数字差异

时间:2010-03-08 14:34:48

标签: bash sed awk scripting

假设我有两个文件,每行有一个数字

File 1      file 2
0.12        0.11     
0.121       0.454 
....        .... 

我想在屏幕上创建每个数字之间的文件或输出差异,以便结果看起来像

 0.0099
-0.333
 ......

您可以使用bash / awk / sed

5 个答案:

答案 0 :(得分:10)

以下显示了如何获取file1 - file2

$ cat file1
0.12
0.43
-0.333

$ cat file2
-0.1
-0.2
0.2

$ paste file1 file2 | awk '{print $1 - $2}'
0.22
0.63
-0.533

答案 1 :(得分:5)

AWK

awk '{getline t<"file1"; print $0-t}' file2  #file2-file1

说明:getline t <"file1"file1获取一行,并将其值转换为变量t$0是awk正在处理的file2的当前记录。其余的只是减法并打印出结果。

exec 4<"file1"
while read -r line
do
    read -r s <&4
    echo "${line}-${s}" | bc
done <"file2"
exec >&4-

答案 2 :(得分:0)

# cat f1
0.12
0.121
# cat f2
0.11     
0.454

# pr -m -t -s\  f1 f2 | gawk '{print $1-$2}'
0.01
-0.333

答案 3 :(得分:0)

击:

paste file1 file2 | while read a b ; do 
  echo "$a - $b" | bc
done

答案 4 :(得分:0)

paste -d - num1 num2 | bc

修改

此版本正确处理负数:

yes '-' | head -n $(wc -l < num1) | paste -d ' ' num1 - num2 | bc