shell数值操作(四则运算,浮点数,科学计数法)---awk,bc 1
两个⽂件对应⾏的数值进⾏数值计算
#!/bin/bash
#use awk to handle Scientific notation
#use bc to handle float
for loop in  1
do
d=`ls ./performance.v1/${loop}thread/*.ori `
for f in $d
do
echo $f
line=`cat $f | wc -l`
rm ${f}-minus
#      for ((i=1;i<=$line;i++))
for i in `seq $line`
do
file1=` awk '{ if(NR=='"$i"') print $2}' ${f} `
#NR代表⾏号
echo $file1
file2=` awk '{ if(NR=='"$i"') print $2}' ${f/v1/v2/} `
#      字符串替换  ${f/v1/v2/} `
echo $file2
if echo $file1 | grep "E"
then
result=`echo "$file1 $file2" | awk '{print "%f",$1-$2}'`
# awk可以对科学计数法进⾏计算
echo $result>>${f}-minus
echo "result"
else
result=` echo "$file1 - $file2" | /home/xuanji/bc-1.06/bc/bc`
#bc可以处理浮点数
echo $result
echo "result"
echo $result >>${f}-minus
fi
done
done
done
2  参考代码:
shell脚本,⼀⾏⼀⾏⽐较两个⽂本⽂件。 shell脚本,对⼀⾏⼀⾏读取⽂本⽂件得到的那⼀⾏数据进⾏字符串
2012-11-12 15:58提问者: |浏览次数:376次
以逗号分割。
⽐如⽂本⽂件的数据:
group1,table1,name,1
group2,table1,name,2
我来帮他解答
满意回答
shell代码2012-11-12 18:28
没明⽩你的意思,就写了⼀个判断两个⽂件对应⾏是不是相同。在线的话就追问我。line=`cat file1|wc -l`
for ((i=1;i<=$line;i++));do
file1=`awk 'NR="'$i'"{print $0}'` file1
file2=`awk 'NR="'$i'"{print $0}'` file2
if [ $file1 == $file2 ];then
echo line $i looks same!
else
echo line $i looks different!
fi
done
追问
对读取的⼀⾏⼀⾏的⽂件内容以逗号分割,我现在已经做出来了,⽐如这种:fileGroupId=`echo $line | awk -F ',' '{ print $1; }'`
columnName=`echo $line | awk -F ',' '{ print $7; }'
##然后⽐较。
if [[ $fileGroupId != $groupParam ]]; then
⽹址:zhidao.baidu/question/496930297.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。