RUI个人博客 首页>>Linux>>[原]Linux常用字符串操作 以及执行的效率

[原]Linux常用字符串操作 以及执行的效率

1. bash 内部变量

    有些内部命令在目录列表时是看不见的,它们是Shell本身提供,常用的内部命令有:
echo,eval,exec,export,readonly,read,shift,wait,exit 和 点(.)

echo 变量名
    将变量名指定的变量显示到标准输出
evalargs
    读入参数args,并将它们组合成一个新的命令,然后执行。
shift 语句
    shift 语句按如下方式重新命名所有的位置参数变量,即$2成为$1

[root@RAC1 oldboy]# which ssh-copy-id
[root@RAC1 oldboy]# head -30 /usr/bin/ssh-copy-id 

[root@RAC1 ~]# TYGER="I am tyger"
[root@RAC1 ~]# echo $TYGER
[root@RAC1 ~]# echo $TYGER|wc -m
[root@RAC1 ~]# echo ${#TYGER}
[root@RAC1 ~]# echo ${TYGER:2}
[root@RAC1 ~]# echo ${TYGER:2:2}
[root@RAC1 ~]# echo $TYGER |cut -c 1-4
[root@RAC1 ~]# echo $TYGER |cut -c 3-4
[root@RAC1 ~]# echo ${TYGER#I am}
[root@RAC1 ~]# echo ${TYGER##I am }
[root@RAC1 ~]# echo ${TYGER%er}
[root@RAC1 ~]# echo ${TYGER%tyger}
[root@RAC1 ~]# echo ${TYGER%I am}
[root@RAC1 ~]# echo ${TYGER%%er}
[root@RAC1 ~]# echo ${TYGER%%I am}
[root@RAC1 ~]# echo ${TYGER/I am/you are}
##批量删除文件的名字中的文件名
[root@RAC1 ~]# ll stu_10299_*
[root@RAC1 ~]# test="stu_10299_5_finish.jpg"
[root@RAC1 ~]# echo $test
[root@RAC1 ~]# echo ${test%finish.jpg}.jpg
[root@RAC1 ~]# ll stu_10299_*
[root@RAC1 ~]# cat piliang.sh 
for f in `ls *.jpg`
do 
    mv $f `echo ${f%finish.jpg}.jpg`
done
[root@RAC1 ~]# sh piliang.sh 
[root@RAC1 ~]# ll stu_10299_*
[root@RAC1 ~]# ll stu_10299_*
[root@RAC1 ~]# cat daxie.sh 
for f in `ls *.jpg`
do
    mv $f `echo ${f/%jpg/JPG}`
done
[root@RAC1 ~]# sh daxie.sh 
查看变量字符的长度

[root@RAC1 ~]# chars=`seq -s " " 100`

[root@RAC1 ~]# echo $chars

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 

37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 

53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 

69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 

85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

[root@RAC1 ~]# 
[root@RAC1 ~]# echo ${#chars}
291
[root@RAC1 ~]# echo ${chars}|wc -m
292
[root@RAC1 ~]# echo $(expr length "$chars")
291

执行时间,效率如何?

[root@RAC1 ~]# time for i in $(seq 11111);do count=${#chars};done

real    0m0.649s
user    0m0.638s
sys     0m0.009s
[root@RAC1 ~]# time for i in $(seq 11111);do count=`echo ${chars}|wc -m`;done

real    0m22.679s
user    0m6.864s
sys     0m13.674s
[root@RAC1 ~]# time for i in $(seq 11111);do count=`echo expr length "${chars}"`;done

real    0m4.963s
user    0m1.824s
sys     0m3.060s
   
    我们看到速度相差几十到上百倍,一般情况调用外部命令处理,与内置功能操作性能相差较大。在shell 编程中,我们应尽量用内置操作或函数完成。

        学习在于积累,一点一点来吧。。。。









昵  称:
邮  箱:
评论内容:
验 证 码:
可用[code][/code]插入代码
点击刷新验证码