一.正则表达式
正则表达式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户清一达到查找,删除,替换某特定字符串的处理程序。
正则表达式基本上是一种“表示法”,只要工具程序支持这种表示法,那么该工具程序就可以用来作为正则表达式的字符串处理之用。
二.语系对正则表达的影响
由于不同语系编码数据并不相同,会造成数据选取结果的区别。所以,使用正则表达时,需要特别留意当时的语法环境为何,否则可能会发现与别人不相同的选取结果。而为了避免这些所造成的英文与数字的选取问题,就需要了解一些特殊符号
特殊符号 代表意义
[:alnum:] 代表英文大小写字符及数字,即0-9,A-Z,a-z
[:alpha:] 代表任何英文大小写字符,即A-Z,a-z
[:blank:] 代表空格健与Tab键
[:cntrl:] 代表键盘上面的控制按键,即包括CR,LF,Tab,Del等
[:digit:] 代表数字而已,即0-9
[:graph:] 除了空格符外的其他所有按键
[:lower:] 代表小写字符,即a-z
[:print:] 代表任何可以被打印出来的字符
[:punct:] 代表标点符号,即"'?!;:#$
[:upper:] 代表大写字符,即A-Z
[:space:] 任何会产生空白的字符,包括空格键CR等
[:xdigit:] 代表十六进制的数字类型,因此包括0-9,A-F,a-f的数字与 字符
三.grep的一些高级参数
grep
格式: grep [-acinv] [-A] [-B] '查找字符串' filename
-a:将binary文件以text文件的方式查找数据
-c:计算找到“查找字符串”的次数
-i:忽略大小写的不同
-n:输出行号
-v:反向选择
-A:后面可加数字,为after的意思,除了列出该行外,后续的n行也列出来
-B:后面可加数字,为befer的意思,除了列出该行外,前面的n行也列出来
基础正则表达式字符
RE字符 |
意义 |
^word |
待查找字符串在行首 |
Word$ |
待查找字符串在行尾 |
. |
以表一定有一个任意的字符 |
|
转义字符,将特殊符号的特殊意义去除 |
* |
重复0到无穷多个的前一个字符 |
[list] |
从字符集合的RE字符里面找出想要选取的字符 |
n1-n2 |
从字符集合的RE字符里面找出想要选取的字符范围 |
[^list] |
从字符集合的RE字符里面找出不要的字符串或范围 |
{n,m} |
连续n到m个的前一个RE字符,若为{n}则是连续n个的前一个RE字符,若为{n,}则是连续n个以上的前一个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:未必会存在,一般代表选择动作的行数,距离来说,如果我的动作时需要在10-20行之间进行的,则“10,20【动作行为】”
function有下面这些参数:
a:新增,a后面可接字符串,而这些字符串会在新的以行出现
c:替换,c后面可接字符串,这些字符串可以替换n1,n2之间的行
d:删除,因为时删除,所以d后面通常不接任何参数
i:插入,i的后面可以接字符串,而这些字符串会在新的一行出现
p:打印,也就是将某个选择的数据打印出来,通常会与参数sed -n一起运行
s:替换,可以直接进行替换的工作。
扩展正则表达式
RE字符 |
意义与范例 |
+ |
重复一个或一个以上的前一个RE字符 |
? |
零个或一个的前一个RE字符 |
| |
用或的方式找出数个字符串 |
() |
找出“组”字符串 |
()+ |
多个重复组的判别 |
五.awk
awk '条件类型1{动作1} 条件类型2{动作2}...' filename
awk主要是处理每一行的字段内的数据,而默认的字段的分隔符为空格键或Tab键。