日历

2010年六月
« 5月   7月 »
 123456
78910111213
14151617181920
21222324252627
282930  

最近评论

    linux/unix基础知识

    正则表达式简介

         为什么要使用正则表达式
        linux/UNIX中提供了许多命令和工具,它们可以在文件中查找(Search)字符串或替换(Replace)字符串的功能。像grep,vi,sed,awk等,不论是查找字符串还是替换字符串,都得先告诉这些命令所要查找(被替换)的字符串是什么,如果未能事先明确知道所要查找(被替换)的字符串是什么,只知道这个字符串存在的范围或特征时,例如:(一)查找”T0.c”,”T1.c”,”T2.c”…”T9.c” 当中的任一字符串。(二)查找至少存在一个”A”的任意字符串。这种情況下,如何告诉执行查找字符串的命令所要查找的字符串是什么。例(一) 中,要查找任一在”T”与”.c” 之间存在一个阿拉伯数字的字符串;当然可以用列举的方式,一一把所要查找的字符串告诉执行命令的命令。但例(二) 中符合该条件的字符串有无限种可能,势必无法一一列举。此时,便需要另一种字符串表示的方法。

        什么是正则表达式:正则表达式(以下简称Regexp)是一种字符串表达的方式。可以指定具有某特征的所有字符串。
        注:为了与一般字符串区别,在这里,在正则表达式的字符串之前皆加 “Regexp”。
        awk程序中常以/…/括住Regexp,以区別于一般字符串。

    AWK的使用

    awk的使用 第十四部分 awk的内部变量

        awk的内部变量的个数不多,在这里介绍的时候就不按照字母顺序排列了,而是按相关性分类说明。

        ARGC         
        ARGC表示命令行上除了选项-F,-v,-f等选项及其所对应的参数之外的所有参数的个数。如果将“awk程序”直接写在命令行上,那么ARGC是不会把“awk程序”计算在内的。

        ARGV         
        ARGV是一个数据,用来记录命令行上的参数的名称。 执行下列命令:
    [root@myfreelinux pub]# awk ‘BEGIN{printf(“ARGC=%d\n”,ARGC);for(a in ARGV)printf(“ARGV[%d]=%s\n”,a,ARGV[a]);}’ inte integer
    ARGC=3
    ARGV[0]=awk
    ARGV[1]=inte
    ARGV[2]=integer
        需要注意当ARGC = 3 时,命令列上只指定了2 个文件。
    awk的参数-F\t 表示以tab 为栏位分隔字符FS(field seporator);-v a=8 是用以初始化程序中的变量。

    AWK的使用

    awk的使用 第十三部分 awk的字符串和数学函数

        awk 的內建函数(Built-in  Functions)        

        一、字符串函数 
        语法:index( 原字符串,寻找的子字符串):
        解释:若原字符串中含有欲找寻的子字符串,则返回该子字符串在原字符串中第一次出现的位置,如果没有出现该子字符串则返回0。
        例如执行:
        [root@myfreelinux pub]# awk ‘BEGIN{print index(“0411-8888-9999″,”-8″)}’
        5   是返回值,实际上检索到“-8”时,“-”在第五位,所以返回值就是5了。

                       
        语法:length(字串)
        解释:返回该字串的长度。 
        例如执行:
    [root@myfreelinux pub]# awk ‘BEGIN{print length(“0411-8888-9999”)}’
    14 是返回值