bash处理来自两个文件的数据

时间:2012-04-26 22:51:54

标签: bash

文件1:

456
445
2323

file2的:

433
456
323

我希望得到两个文件中数据的不足并输出到output.txt,即:

23
-11
2000

我怎么知道这个?谢谢。

4 个答案:

答案 0 :(得分:4)

$ paste file1 file2 | awk '{ print $1 - $2 }'
23
-11
2000

答案 1 :(得分:1)

在纯粹的bash中,没有外部工具:

while read -u 4 line1 && read -u 5 line2; do
  printf '%s\n' "$(( line1 - line2 ))"
done 4<file1 5<file2

这可以通过打开两个文件(将它们附加到文件描述符4和5)来实现;进入一个循环,我们在每次迭代中从每个描述符中读取一行(如果 没有值,则退出循环),并计算并打印结果。

答案 2 :(得分:1)

使用粘贴创建公式,并使用bc执行计算:

paste -d - file1 file2 | bc

答案 3 :(得分:0)

您可以使用paste和awk在列之间操作:

paste -d" " file1 file2 | awk -F" " '{print ($1-$2)}'

甚至管道到文件:

paste -d" " file1 file2 | awk -F" " '{print ($1-$2)}' > output.txt

希望它有所帮助!