linux命令两个数相减,办法做到在linux两个文本文件之间相减

这是一个没有AWK一个版本,它可以帮助你,而你完成你的awk脚本:

#!/bin/bash

#substraction.sh

file1="a.txt"

file2="b.txt"

echo "">myTempFile.txt

fileTemp="myTempFile.txt"

lin1=$(wc -l $file1 | cut -d " " -f 1)

lin2=$(wc -l $file2 | cut -d " " -f 1)

if [ $lin1 -lt $lin2 ]; then

lineas=$lin2

myfileBIG=$file2

myfileTINY=$file1

else

lineas=$lin1

myfileBIG=$file1

myfileTINY=$file2

fi

ind=1

echo "Total of lines: "$lineas

#### myfileBIG with myfileTINY

while [ $ind -le $lineas ] #less than or equal to

do

mynum1=$(sed -n "$ind"p $myfileBIG | cut -d " " -f 1)

mydat1=$(sed -n "$ind"p $myfileBIG | cut -d " " -f 2)

mynum2=$(cat $myfileTINY | grep $mydat1 | cut -d " " -f 1)

#echo "$mynum1**$mydat1**$mynum2"

if [ -n "$mynum2" ]; then

result=$(($mynum1-$mynum2))

echo "$mydat1: $mynum1-$mynum2=$result"

echo "$mydat1: $mynum1-$mynum2=$result">>myTempFile.txt

else

result=""

echo "$mydat1: $mynum1"

echo "$mydat1: $mynum1">>myTempFile.txt

fi

ind=$(($ind+1))

#echo "Posicion: $ind de $lineas"

done

#### myfileTINY with myTempFile

echo "Using temp file..."

ind=1

if [ $lineas -eq $lin1 ]; then

lineas=$lin2

else

lineas=$lin1

fi

echo "Total of lines: "$lineas

while [ $ind -le $lineas ]

do

mynum1=$(sed -n "$ind"p $myfileTINY | cut -d " " -f 1)

mydat1=$(sed -n "$ind"p $myfileTINY | cut -d " " -f 2)

mynum2=$(cat $fileTemp | grep $mydat1 | cut -d " " -f 1)

#echo "$mynum1**$mydat1**$mynum2"

if [ -z "$mynum2" ]; then

echo "$mydat1: $mynum1"

echo "$mydat1: $mynum1">>myTempFile.txt

fi

ind=$(($ind+1))

#echo "Posicion: $ind de $lineas"

done

echo "...Done!"

echo "Result:"

sort -b myTempFile.txt

执行跟随此:

bash ./substraction.sh

结果:

MFoYX.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值