1. 求两个数的最大公约数和最小公倍数
#!/bin/sh
#=================================================================
# Author : greatwqs
# Info : 求两个数的最大公约数和最小公倍数
# Input : LCM表示最小公倍数(lowest common multiple)
# Call : lcm 12 15
# Date : 2010/12/17 - modify format
# xxxx : 2010/12/17 - Creation
#-----------------------------------------------------------------
# Usage information
#-----------------------------------------------------------------
Usage()
{
echo "========================================="
echo "求两个数的最大公约数和最小公倍数"
echo "用法: lcm 12 15"
echo "返回: 最大公约数:3,最小公倍数:60."
echo "========================================="
exit -1
}
#-----------------------------------------------------------------
# Test for valid input or display usage() information
#-----------------------------------------------------------------
if [ $# -lt 2 ]; then
Usage
fi
#-----------------------------------------------------------------
# 得到命令中的两个值
#-----------------------------------------------------------------
num1=$1
num2=$2
#-----------------------------------------------------------------
# operation the variables
# 1.先找出其中一个比较小的数,用这个数进行递增的循环
# 2.对另外一个值进行求膜运算
# 3.在运算过程中,对能整除的循环变量记录下来
# 4.把能整除的最大的变量opr取出(最大公约数)
# 5.result = num1/opr * num2/opr * opr = num1/opr * num2
#-----------------------------------------------------------------
#-----------------------------------------------------------------
# get num : 1.GREAT,2.SMALL
#-----------------------------------------------------------------
if [ num1 -eq num2 ];
then
echo "最大公约数:${num1},最小公倍数:${num1}."
exit
fi
if [ num1 -gt num2 ];
then
GREAT=$num1
SMALL=$num2
export GREAT
export SMALL
else
GREAT=$num2
SMALL=$num1
export GREAT
export SMALL
fi
#echo "GREAT ${GREAT}"
#echo "SMALL ${SMALL}"
#-----------------------------------------------------------------
# 程序测试最大公约数,初始化变量
# tmp=`expr $GREAT % $i` 语法调试了半个小时!!
#-----------------------------------------------------------------
i=1
GCD_RESULT=1
greattmp=1
smalltmp=1
LCM_RESULT=1
export i
export greattmp
export smalltmp
export GCD_RESULT
export LCM_RESULT
while [ i -le SMALL ]
do
#echo "LOOP i: ${i}"
greattmp=`expr $GREAT % $i`
smalltmp=`expr $SMALL % $i`
#echo "greattmp : ${greattmp}"
#echo "smalltmp : ${smalltmp}"
if [ ${greattmp} -eq 0 ]; then
if [ ${smalltmp} -eq 0 ]; then
GCD_RESULT=${i}
fi
fi
i=`expr ${i} + 1`
#echo "GCD_RESULT : ${GCD_RESULT}"
done
#echo ${GCD_RESULT}
#-----------------------------------------------------------------
# 上面已经求出了最大的公约数(GCD_RESULT)
# 下面进行最小公倍数的处理
# 为了避免变量名的太多,这里的余数用smalltmp和greattmp代替
# 5.result = num1/opr * num2/opr * opr = num1/opr * num2
# *号为乘号,要考虑转义
#-----------------------------------------------------------------
LCM_RESULT=`expr $SMALL / $GCD_RESULT`
#echo "LCM_RESULT : ${LCM_RESULT}"
LCM_RESULT=`expr $LCM_RESULT \* $GREAT`
echo "最大公约数:${GCD_RESULT},最小公倍数:${LCM_RESULT}."
#-----------------------------------------------------------------
#EOF
#-----------------------------------------------------------------
2. shell-计算文件中单词出现次数并按次数排序
echo 'abdaaccabca' | sed 's/./&\n/g' | grep -c a
3. 依次读取文本文件, 每行中词与词之间用竖线(|)分割,分割后依次把参数保存至数据库。
#!/bin/sh
for line in `cat mm.txt`
do
echo $line | awk -F "|" '{ print $1,$2,$3 }'
#$line=greatwqs|wang|great
#echo $1
#echo $2
#echo $3
java com.greatwqs.shell.DBImportTool $1 $2 $3
done
4. 查找字符统计:
#!/bin/bash
if [ ! -n "$1" ]
then
echo "Usage ./statistics filepath [keywords]"
exit 0
fi
KEY_WORD=""
if [ -n $2 ]
then
KEY_WORD=$2
fi
awk 'BEGIN{}
{
if ("'$KEY_WORD'" == "") {
if($6 == "\"POST" || $6 == "\"GET") {
urls[$7]++
}
} else {
if(($6 == "\"POST" || $6 == "\"GET") && $7 == "'$KEY_WORD'") {
urls[$7]++
}
}
}
END{
for (i in urls) {
print i, urls[i]
}
}' $1 | sort -k 2rn
继续添加中...