正则表达式:处理字符串的方法,以行为单位进行字符串的处理行为,正则表达式经过一些特殊符号的辅助,让用户轻易达到查找、删除、替换某特定字符串的处理程序。git
正则表达式基本上是一种“表示法”,只要工具程序支持这种表示法,那么该工具程序就能够用来做为正则表达式的字符串处理之用。正则表达式
基础正则表达式
语系对正则表达式的影响;工具
- LANG=C时:0 1 2 3 4 。。。 A B C D … Z a b c d 。。。 z
- LANG=zh_CN时:0 1 2 3 4 … a A b B c C d D … z Z
使用正则表达式时,须要特别留意当时的环境语系,不然会发现与别人不一样的选取结果编码
为了不编码所形成的英文与数字选取的问题,特殊符号:命令行
- [:alnum:] 英文大小写字符及数字
- [:alpha:]英文大小写字符
- [:upper:]英文大写字符
- [:lower:]英文小写字符
- [:digit:]数字
grep [-A] [-B] [—color==auto] ‘搜寻的字符串’filename
参数:
-A:后面可加数字,为after的意思,除了列出该行外,后续的n行也列出来
-B:后面可加数字,为befor的意思,除了列出该行外,前面的n行也列出来
- 语系已经使用“export LANG=C”的设置值
- grep已经使用alias设置成为“grep –-color==auto”
查找特定的字符串字符串
利用中括号[]来查找集合字符字符串处理
行首和行尾字符^$it
^符号在字符集和符号(中括号[])以内和以外是不一样的,在[]内表明“反向选择”,在[]以外表明定位在行首io
找出空白行:^$(只有行首和行尾)function
任意一个字符.(小数点):表明必定有一个任意字符
与重复字符*(星号):表明重复前一个字元,0到无穷屡次的意思
“.*”表明零个或任意多个字符的意思
限定连续RE字符的范围{}:必须使用转义字符 \
正则表达式的特殊字符与通常在命令行输入命令的“通配符”并不相同
sed工具
sed [-nefr] 动做
参数:
-n:使用安静模式,在通常sed用法中,全部来自STDIN的数据通常都会列出到屏幕上,但若是加上参数-n后,则只有通过sed特殊处理的哪一行(或操做)才会被列出来
-e:直接在命令行模式上进行sed的动做编辑
-f:直接将sed的动做写在一个文件内,-f filename则能够执行filename内的sed动做
-r:sed的动做支持扩展型正则表达式语法(默认是基础型正则表达式语法)
-i:直接修改读取的文件内容,而不是由屏幕输出
动做说明:
[n1,[n2]] function
n1,n2:通常表明选择进行动做的行数
function有以下参数:
a:新增
c:替换
d:删除
i:插入
p:打印
s:替换,’s/要被替换的字符/新的字符串/g’
sed后边接的动做,务必以“两个单引号括住
$表明最后一行
新增好几行的时候,每一行中间必需要以反斜杠来进行新行的增长
awk:好用的数据处理工具
sed经常做用于一整行的处理,awk比较倾向于将一行分红数个”字段“来处理。所以,awk至关适合处理小型的数据处理
awk ‘条件类型1[动做1]条件类型2[动做2]…’filename
awk主要处理每一行的字段内的数据,而默认的字段的分隔符为空格键或[Tab]键
每一行的每个字段都有变量名称,$1,$2。$0表明一整行数据的意思
整个awk的处理流程是:
- 读入第一行,并将第一行的数据填入变量名称中
- 依据条件类型的限制,判断是否须要进行后面的操做
- 作完全部的动做与条件类型
- 若还有后续的”行“的数据,重复以上1~3步骤,直到全部的数据都读完为止
awk以行为一次处理的单位,而以字段为最小处理的单位
awk内置变量:
- NF:每一行拥有的字段总数
- NR:目前awk所处理的是”第几行“的数据
- FS:目前的分隔符,默认是空格键
awk逻辑运算符:> < >= <= == !=
- 全部awk的动做,即在{}内的动做,若是有须要多个命令辅助时,可利用分号;间隔,或者直接以【enter】键来隔开每一个命令
- 逻辑运算当中,若是是”等于“的状况,务必使用==
- 格式化输出时,在printf的格式设置中,务必加上\n,才能进行分行
- 变量能够直接使用,不须要加上$号
文件比较工具
同一个软件的不一样版本之间,比较配置文件与源文件的区别。
diff:以行为单位比较,通常用在ASCII纯文本文件的比较上。一般是用在同一的文件(或软件)的新旧版本区别
diff [-bBi] from-file to-file
参数:
-b:忽略一行当中仅有多个空白的区别
-B:忽略空白行的区别
-i:忽略大小写
cmp [-s] file1 file2
主要利用”字节“单位去比较
参数:
-s:将全部不一样点的字节都列出来,由于cmp默认仅会输出第一个发现的不一样点
patch
将区别文件制做成补丁文件:
dif –Naur 旧文件 新文件 > *.patch
更新:patch –pN < patch_file
还原:patch –R –pN < patch_file
参数:
-p:后面的N表示取消几层目录
-R:表明还原,将新的文件还原成旧的版本
文件打印准备:pr