日期:2014-05-16  浏览次数:20729 次

菜鸟求助,关于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

------解决方案--------------------
1
awk '{print substr($0,3,7)}' urfile 
------解决方案--------------------
 sort

2
awk '{s+=$9}END{print s/NR}' urfile