1. 基础的grep
1.1 grep 主要用来检索查找文件或者输入流中特定的内容,以行为单位
基础正则中用到的特殊字符
[:alnum:] 代表了 大小写字母和数字 相当于 [a-zA-Z0-9] //常用
[:alpha:] 代表了大小写字母 相当于 [a-zA-Z] //常用`
[:digit:] 代表了数字 相当于 [0-9] //常用`
[:upper:] 代表了大写字母 相当于[a-z]//常用`
[:lower:] 代表了小写字母 相当于[a-z]//常用`
[:blank:] 代表空格键与[Tab] 按键
[:cntrl:] 代表控制按键,CR,LF ,Tab,Del
[:graph:] 代表除了空格符外的(空格符和Tab)所有按键
[:print:] 代表任何刻意被打印出来的字符
[:punt:] 代表标点符号
[:xdigit:] 代表十六进制数字类型 0-9 a-f A-F
1.2 基础正则表达式字符
^ 行首 grep ‘^#’ test.txt //查找所有以#开头的行
$ 行尾 grep ‘#$’ test.txt //查找所有以#结尾的行
. 代表任意字符
* 重复零到无穷多个的前一个字符 grep ‘tt*’ test.txt //查找含有t tt ttttt 的行
\ 转义字符 ,因为^ $ . 等字符是正则本身表达式的一部分,假如需要使用这些字符需要转义才能变成普通的字符
grep ‘.’ test.txt //查找包含. 的行
[char] 匹配包含char 字符的一行数据
[a-z] 匹配包含a-z 字符中的任意一个 a ,z 可以自定义
notice 要想[a-z] 匹配 a b c d e …z 系统排序方式必须是c 排序就是根据ascii 进行的排序
locale -a 显示本地设置 看看有木有 c 和 posix 的,有了就是c排序没有的话是字典排序 即 AaBa….Zz
设置c排序,export LC_COLLATE=C 要永久改变需要添加到登陆文件中 /etc/profile
[^list] 不包含list字符的行
{m,n} 连续n到m个的前一个 字符 {m} m个 {n,} n+个
1.3 grep [option]
-v 反向选择
-n 输出行号
-E 扩转表达式(扩转表达式中 + ? {} <> 可以不转义使用)
–color=auto 被选中的行自动变颜色 可以组合使用
更多的内容 请 man grep
2. 扩展正则表达式 egrep
2.1 扩展正则表达式字符
+ 至少一个的前一个字符 类似 *
? 零个或者一个的前一个字符
| 或可以把命令组合起来 grep -n –color=auto ‘^# | #$’ test.txt
// 选择以#开头 或者# 结果的
(string) 找出组字符串 找出string
(string)+ 找出至少一组组字符串 找出string
3. sed 工具
主要用来读行进行增删改查的操作,可以不打开文件直接操作
sed [-nefr] [action]
sed [n1[,n2] function
function :
a add char
d delete line
i insert into the line
c replace the content of n1 ,n2
s replace like the vim :s commad
n1,n2s/old/new/g
s/old/new/g support grep
detail use :man sed
grep ‘test’ test.txt |sed ‘/^$/d’ //delete the line which is empty
4. awk output field
last -n 5 |awk ‘{print 1"\t" 3 ” username “}’
last -n 5 |awk ’ 1>2 {print1 "\t" $3 ” username “}’
operation : > >= < <= == !=
5. printf : output and format
printf ‘%10s %5i \n’ $(cat test.txt)
6. diff compare the files
#