十一、正则表示法与文件格式处理

2018-08-22  本文已影响4人  努力爬行中的蜗牛
特殊符号 代表意义
[:alnum:] 代表英文大小写字符及数字,亦卲 0-9, A-Z, a-z
[:alpha:] 代表任何英文大小写字符,亦卲 A-Z, a-z
[:blank:] 代表空格键与 [Tab] 按键两者
[:cntrl:] 代表键盘上面的控制按键,亦卲包括 CR, LF, Tab, Del.. 等等
[:digit:] 代表数字而已,亦卲 0-9
[:graph:] 除了空格符 (空格键不 [Tab] 按键) 外的其他所有按键
[:lower:] 代表小写字符,亦即 a-z
[:print:] 代表任何可以被打印出来的字符
[:punct:] 代表标点符号 (punctuation symbol),亦卲:" ' ? ! ; : # $...
[:upper:] 代表大写字符,亦即 A-Z
[:space:] 任何会产生空白的字符,包括空格键, [Tab], CR 等等
[:xdigit:] 代表 16 进位的数字类型,因此包括: 0-9, A-F, a-f 的数字不字符

1、基础正则表示法的练习

1.1 搜寻特殊字符
grep -n 'the' regular_express.txt
grep -vn 'the' regular_express.txt #反向选择
grep -in 'the' regular_express.txt #不区分大小写
grep -n 't[ae]st' regular_express.txt # []里面无论有几个字符,都仅代表一个字符
grep -n '[0-9]' regular_express.txt # 一组集合字符
grep -n '[a-z]' regular_express.txt # 一组集合字符
grep -n '^the' regular_express.txt # 一行字符以the开头
grep -n '.$' regular_express.txt # 一行字符以.结尾

. 小数点:代表一定有一个任意字符的意思,
* 星号:代表重复前一个0到无穷多次的意思,为组合形态;
grep -n 'ooo' egular_express.txt # 一行中包含2个或者以上的o;
grep -n 'g.
g' egular_express.txt # 一行中包含g*g的内容;
grep -n 'o{2}' egular_express.txt # 包含2个o的内容行;限定连续字符
grep -n 'o{2,5}' egular_express.txt # 包含2个到5个o的内容行;限定连续字符

RE字符 意义与范例
^word 待搜寻的字符在行首,例:grep -n '^#' egular_express.txt
word$ 待搜寻的字符在行尾,例:grep -n '!$' egular_express.txt
. 代表一定有一个任意字符的字符,例:grep -n ’e.e' egular_express.txt
\ 跳脱字符,将特符号的特殊意义去除,例:grep -n ' egular_express.txt
* 重复0到无穷多个的前一个RE字符,例:grep -n ’ess*' egular_express.txt
[list] 字符集合RE字符,里面列出想要截取的字符,例:grep -n 'g[ld]' egular_express.txt
[n1-n2] 字符集合的RE字符,里面列出想要截取的字符范围,例:grep -n ‘[0-9]' egular_express.txt
[^list] 字符集合的RE字符,里面列出不要的字符串或者范围,例:grep -n 'oo[^t]' egular_express.txt
{n,m} 连续n到m个前一个RE字符,例:grep -n 'go{2,3}g' egular_express.txt

2、sed工具

sed本身也是一个管线命令,可以分析standard input,还可以将数据进行取代、删除,截取特定行等功能
nl /etc/passwd | sed '2,5d' # 将 /etc/passwd 的内容列出幵且打印行号,同时,请将第 2~5 行删 除!
nl /etc/passwd | sed '2a drink tea' #在第二行后(亦卲是加在第三行)加上『drink tea?』字样!
nl /etc/passwd | sed '2,5c No 2-5 number' # 将第 2-5 行癿内容叏代成为『No 2-5 number』
nl /etc/passwd | sed -n '5,7p' # 仅列出 /etc/passwd 档案内癿第 5-7 行

3、文件的格式化与相关处理

3.1 格式化打印:printf
3.2 处理处理工具:awk
3.3 档案对比工具:diff,cmp

上一篇 下一篇

猜你喜欢

热点阅读