Chinaunix

标题: 想写一个检查一组数字是否连续的脚本,有没有现成的 [打印本页]

作者: goodier    时间: 2003-03-05 13:49
标题: 想写一个检查一组数字是否连续的脚本,有没有现成的
我想写一个脚本,
它从文件中读取第n列,
然后检查第n列的值是否连续,比如30,31,32等等。
文件名和n都是可变的参数,
我写的比较麻烦,不知道有没有简单的方法。
----------------------------
#!/bin/sh
#set -x

col=1
file=temp.dat
tmpFile="ttmmpp.dat"
prefix=""

if [ $# -ge 2 ]
then
file="$1"
col="$2"
        if [ $# -eq 3 ]
        then
        prefix="$3"
        fi
else
print "usage: chck.sh filename colnum [prefix]"
return
fi

sh -c "more $file|awk '{print \$$col}'">$tmpFile
#content=`sh -c "more temp.dat|awk '{print \$$col}'"`

if [ ! $? -eq 0 ]
then
print "perhaps parameter value is wrong!"   
return
fi

content=`more $tmpFile|sed "s/$prefix//g"|sed "s/\([0-9]*\)[^0-9]*/\1/g`
rm $tmpFile
j="NA"
i=0
for i in $content
do
if [ ! "$j" = "NA" ]
then
then
expr $i + 1 > /dev/null 2>&1
if [ ! $? -eq 0 ]
then
print $i "is not a number!"
return
fi
        if [ ! $i -eq $j+1 ]
        then
                print "noj in filefile is not continuous"
        return
        fi
fi
j=$i
done
if [ $? -eq 0 ]
then
print "$file is continuous!"
fi
作者: nkliyong    时间: 2003-03-05 14:45
标题: 想写一个检查一组数字是否连续的脚本,有没有现成的
col=1
aaa=`echo "awk '{print \$""$col}' $file"|sh`
echo $aaa
echo $aaa|awk 'BEGIN {aa=$1} {for(i=1;i<NF;i++) {if($(i+1)!=$i+1) {printf("error
";exit}} print "ok"}'

不知道何不和用
作者: nkliyong    时间: 2003-03-05 14:46
标题: 想写一个检查一组数字是否连续的脚本,有没有现成的
col=1
aaa=`echo "awk '{print \$""$col}' $file"|sh`
echo $aaa
echo $aaa|awk '{for(i=1;i<NF;i++) {if($(i+1)!=$i+1) {printf("error
";exit}} print "ok"}'
作者: biansj    时间: 2003-03-05 15:22
标题: 想写一个检查一组数字是否连续的脚本,有没有现成的
没有仔细看完,不好意思!

这个短一些:

  1. #!/usr/bin/ksh
  2. col=1
  3. filename="./data"
  4. diff="hello"
  5. cut -f$col $filename | cat -n  | while read key1 key2
  6. do
  7.     [ $diff = "hello" ] && { diff=`expr $key1 - $key2` ;}
  8.     if [ $diff != `expr $key1 - $key2` ]
  9.     then
  10.         echo "$key1:Error!"
  11.     else
  12.         echo "$key1:Ok!"
  13.     fi
  14. done
复制代码

作者: biansj    时间: 2003-03-05 15:26
标题: 想写一个检查一组数字是否连续的脚本,有没有现成的
原帖由 "nkliyong" 发表:
col=1
aaa=`echo "awk '{print \$""$col}' $file"|sh`
echo $aaa
echo $aaa|awk '{for(i=1;i<NF;i++) {if($(i+1)!=$i+1) {printf("error
";exit}} print "ok"}'


刚才没有看到你的,你的比我的还短!
作者: nkliyong    时间: 2003-03-05 15:51
标题: 想写一个检查一组数字是否连续的脚本,有没有现成的
原帖由 "biansj" 发表:


刚才没有看到你的,你的比我的还短!


短的有时不一定好.     




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2