菜鸟求助,关于shell的题,求解
1、文件A.txt中包括如下三行内容:
113605569288 46600055601828820000714073
15540005872TLAQ2 TBAO2 8613900556007
013905561288 46000556900128820000714072
要求:用SHELL或awk将每行的第三到第七的字符取出来,进行排序。
2、有一文件gcount1390451.07.内容如下:
13904516688 0 0 1 0 12.00 0.00 1.00 13.00
13904516688 0 0 1 1 2.00 0.01 0.00 2.10
13904516688 0 0 1 2 2.00 10.00 0.00 12.00
要求:用SHELL或awk的总文件的第9列,求平均值。
shell awk
[解决办法]
$] cat A.txt
[解决办法]
sed -e "s/^.\{2\}\(.\{5\}\).*/\1/"
[解决办法]
sort -g
36055
39055
54000
#!/bin/sh
sum=0
num=0
cat gcount1390451.07
[解决办法]
while read line
do
x=`echo $line
[解决办法]
cut -d\ -f9`
sum=`echo "$sum + $x"
[解决办法]
bc -l`
num=$(($num + 1))
echo "sum=$sum" > /dev/shm/avg.tmp
echo "num=$num" >> /dev/shm/avg.tmp
done
. /dev/shm/avg.tmp
echo "sum=$sum"
echo "num=$num"
avg=`echo "$sum / $num"
[解决办法]
bc -l`
echo "avg=$avg"
$] ./1.sh
sum=27.10
num=3
avg=9.03333333333333333333
awk '{print substr($0,3,7)}' urfile
[解决办法]
sortawk '{s+=$9}END{print s/NR}' urfile