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
继续添加中...