首页 > 代码库 > linux正则表达式与文件格式化处理指令

linux正则表达式与文件格式化处理指令

1.特殊符号:

    1)[:alnum:]:字母和数字

    2)[:alpha:]:字母

    3)[:blank:]:空格和tab键

    4)[:cntrl:]:控制键CR,LF,Tab,Del等

    5)[:digit:]:数字

    6)[:graph:]:除了空格符(空格和tab)外的其他按键

    7)[:lower:]:小写字母

    8)[:print:]:可打印字符

    9)[:punct:]:标点符号

    10)[:upper:]:大写字母

    11)[:space:]:空白字符,如空格,tab,ctr等

    12)[:xdigit:]:16进制数字

2.grep  [-AB] [--color=auto] ‘搜寻字符串’ filename:参数

    1)-A:after,后面直接接数字,除了列出该行之外,还列出后面的n行

    2)-B:before,后面直接接数字,除了列出该行之外,还列出后面的n行

    其他参数可参考:http://7613577.blog.51cto.com/7603577/1595762

3.dmesg  [-cn][-s <缓冲区大小>]:显示开机信息,保存在/var/log目录中,参数:

    1)-c:显示信息后,清除ring buffer中的内容

    2)-s<缓冲区大小>:预设置为81896,刚好等于ring buffer的大小

    3)-n:设置记录信息的层级

    说明:该指令主要用于显示内核环缓冲区内容,内核将各种消息存放在这里。在系统引导时,内核将与硬件和模块初始化相关信息填到这个缓冲区中。内核缓冲区中消息对于诊断系统问题,通常非常有用。在运行dmesg时,它显示大量信息。通常通过less或grep使用管道查看dmesg的输出,这样可以更容易找到待查信息。

4.正则表达式中,“.”有且仅有一个任意字符;“*”:表示重复前一个字符0次或多次。

5.正则表达式小结:

    1)^word:待搜索字符在行首

    2)word$:待搜索字符在行尾

    3).:一个任意字符

    4)\:转义字符

    5)*:重复前一个字符0次或多次

    6)[list]:匹配中括号中的任一字符

    7)[n1-n2]:匹配从n1到n2之间连续字符中的一个

    8)[^list]:匹配除了list以外的任一字符

    9)\{n,m\}:重复前一个字符n到m次

6.sed  [-nefr] [动作]:管线命令,可以对数据进行取代,删除新增,撷取特定行等,参数,

    1)-n:使用安静模式,在一般sed的用法中,所有来自STDIN的数据都会被列到屏幕上但如果加上-n参数后,则只有经过sed特殊处理的哪一行才会被列出来

    2)-e:直接在指令列模式上进行sed的动作编辑,即进行多个指令连续操作

    3)-f:直接将sed的动作写在一个档案内,-f  filename则可以执行filename内的sed动作

    4)-r:sed动作支持的是延伸型正则表示法的语法

    5)-i:直接修改读取的档案内容,而不是由屏幕输出

    动作说明:’[n1][,n2]  function’

    n1,n2:不见得会存在,一般表示“选择进行动作的行数

    function 有如下这些:

    1)a:新增,a的后面可以接字符串,而这些字符串会在下一行出现

    2)c:取代,c的后面可以接字符串,这些字符串可以取代n1,n2之间的行

    3)d:删除,

    4)i:插入,i的后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行)

    5)p:打印,亦即将某个选择的数据打印出,通常p会与参数sed –n一起运作

    6)s:取代,可以直接进行取代的工作,通常这个s可以搭配正则表示法。

7.egrep :延伸正则表达式,相当于grep的加强版,延伸正则表达式支持的特殊符号:

    1)+:重复一个或多个前一个字符

    2)?:零个或一个前面的字符

    3)|:用或的方式找出数个字符串

    4)():找出群组字符串

    5)()+:重复括号中的字符一次或多次

8.printf  ‘打印格式’ 实际内容:非管线指令,打印格式有:

    1)\a:警告声音输出

    2)\b:退格键

    3)\f:清除屏幕

    4)\n:输出新的一行

    5)\r:亦即Enter键

    6)\t:水平的tab键

    7)\v:垂直的tab键

    8)\xNN NN为两位数字,可以转换数字称为字符

    常见的参数格式

    1)%ns:n,数字,s字符串,即有多少个字符串

    2)%ni:i,integer,即有多少个整数字数

    3)%N.nf:f,float,即有N位整数位,和n位小数位

9.awk  ‘条件类型1{动作1} 条件类型2{动作2} …’ filename:数据处理工具,适用于小型数据处理,该指令可以处理后续接的档案,也可以读取来自前一个指令的standard out,awk主要处理每一行的段内的数据,而默认的字段分隔符为空格或tab键。即通过$n(n从1开始),表示第几个字段。awk以行为处理单位,以字段为一次最小处理单位,awk内建变量,

    1)NF:每一行($0)拥有的字段总数

    2)NR:目前awk所处理的第几行数据

    3)FS:目前的分隔符,默认是空格键

    awk逻辑运算字符:>,<,>=,<=,==,!=。

    awk的指令间隔:所有awk的动作,亦即在{}内的动作,如果有需要多个指令辅助时,可利用“;”间隔,或者直接以Enter按键来隔开。

    在格式化输出时,在printf的格式设定当中,务必加上\n,才能进行分析

    awk中变量可以直接使用,不需要加上$符号

    awk还支持if条件判断。

10.diff  [-bBi] from –file to -file:用来比较两个档案之间的差异,并且是以行为单位来对比的。参数:

    1)from  -file:一个档名,作为原始对比档案名

    2)to  -file:一个档名,作为目的对比档案的档名

    这里 from –file 或to –file可以用-取代,那个-代表标准输入之意。

    3)-b:忽略一行当中,仅有多个空白的差异

    4)-B:忽略空白行的差异

    5)-i:忽略大小写的差异

    可以通过diff  -Naur  file.old  file.new>file.patch:生成差异档案。在档案中,行首“-”号代表旧的档案删除的内容,+代表新的档案添加的内容。

11.cmp  [-s] file1 file2:通过字节单位对比两个档案的差异,参数:

    1)-s:将所有不同点的字节处都列出来,因为预设cmp仅会输出第一个发现不同点。

    这个指令多用于比较binary文件。

12.patch  –pN <patch_file,更新档案;patch  -R  –pN <patch_file,还原成旧档案:参数,

    1)-P:后面可以接取消几层目录

    2)-R:代表还原,将新的档案还原成原来旧的档案

    其中patch_file是diff生成的差异档案

13.pr:打印档案的指令,会有页码、标题等


本文出自 “虎哥的博客” 博客,请务必保留此出处http://7613577.blog.51cto.com/7603577/1596571

linux正则表达式与文件格式化处理指令