假设我有两个文件,每行有一个数字
File 1 file 2
0.12 0.11
0.121 0.454
.... ....
我想在屏幕上创建每个数字之间的文件或输出差异,以便结果看起来像
0.0099
-0.333
......
您可以使用bash / awk / sed
答案 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