您的位置:首页 > 运维架构 > Shell

shell数值操作(四则运算,浮点数,科学计数法)---awk,bc

2013-03-05 19:55 309 查看
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提问者:ShiJingCai075
|浏览次数:376次
以逗号分割。
比如文本文件的数据:
group1,table1,name,1
group2,table1,name,2

我来帮他解答

满意回答

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


网址:http://zhidao.baidu.com/question/496930297.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: