Regular Expression 正则表达式RE
用在字符串处理上面的一项表示式
支持正则表达式的工具:vi grep sed awk
12.2 基础正则表达式 P348
语系对正则表达式的影响:
dmesg:列出内核信息
^word 在行首
word$ 在行尾
[^list] 反向选择
grep -n ‘^$’ re.txt 找出空白行
. 一定有一个任意字符的意思 P354
- x*代表有0个x至无穷多个x都可以
两者的区别
.* 零个或者是多个任意字符的意思
限定连续RE字符范围 {}
grep -n ‘o{\2}’ re.txt 转义字符 \
grep:字符串数据的对比,将符合条件的字符串打印出来(以行为单位)
Sed工具 P357
分析标准输入stdin 删除 新增 选取特定行 替换
sed [-nefri] [动作]
- nl命令在linux系统中用来计算文件中行号。nl 可以将输出的文件内容自动的加上行号!
nl /etc/passwd |sed ‘2i drink tea?\
adsdffds?’
- nl /etc/passwd |sed ‘2i drink tea?’
- sed -i 还可以直接修改文件内容(而不经由屏幕输出)
- sed 后面如果接了超过两个以上的动作时,每个动作前都要加上-e才行
vmstat
iostat
12.3 扩展正则表达式 P361
进行组的字符串处理、
egrep
grep -E
- 代表多个该符号以前的字符 包括1个和1个以上(扩展)
- 代表多个该符号以前的字符 包括0个和0个以上(基础)
- 代表多个该符号以前的字符 包括0个和0个以上(基础)
12.4文件的格式化与相关处理
1格式化打印 printf
2awk:好用的数据处理工具 P363
将一行分为数个字段来处理
awk ‘ ‘ filename
NF(每一行$0所拥有的字段总数) Field
NR(处理的第几行数据?) Row
FS(当前的分隔字符 默认空格)
begin Field Separator
cat /etc/passwd | awk ‘{FS=”:”} $3>=500 {print $1 “\t” $3}’
last -5 |sed ‘6,7d’| awk ‘{print $1 “\t lines:” NR “\t columes:” NF}’
- awk的动作,即在需要多个命令辅助时,可以利用分号;间隔。或者用ENTER键来隔开每个动作
- 与bash shell中的变量不同,awk变量可以直接使用,不用加$符号
3文件比较工具
diff (ASCII纯文本文件上) P366
- 还可以比较整个目录下的不同
- 以一行为单位比较
- differ产生.patch补丁文件
- 采用patch命令更新和还原
cmp (非文本文件)
- 以字节单位比较
- 也可以比较二进制文件
sed当中使用变量替换以及执行外部命令
在sed中引入shell变量的四种方法
sed命令使用双引号的情况下,使用$var直接引用
sed命令使用单引号的情况下,使用’”$var”‘引用