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
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。