正则表达式分为基础表达式和扩展的正则表达式
基础表达式
grep [-acinv] '字符串' filename
-a 二进制文件中以文本文件形式搜索(经常碰到grep提示错误 加上这个参数)
-c 计算次数 -i 忽略大小写 -n 输出行号 -v 反向搜索,没有数据的行显示出来
组合用法: 反向选择 grep -n '[^g]o' test.txt (o前面不带g)
组合可用[^0-9] [a-z] [A-Z]全部则是[0-9a-zA-Z]
^加上字符或字符串代表此字符或字符串在开头位置 例:开头不是英文字符 ^[^a-zA-Z]
^符号在【】之内代表“反向选择”,在外代表定位在行首
-n '\.$' 行尾为小数点. -n '^$' 空白行
任意字符.与通配符*
.表示任意一个字符 *表示任意0或多个字符(重复0个或多个前面的任意一个字符)
0*表示拥有空字符或一个0以上字符 00*才表示只是一个0加上任意字符
.*表示零个或多个任意字符
限定连续重复字符范围{} 与转义符 \ 合用
grep -n '0\{2\}' test.txt 查找2个o的字符串
grep -n '0\{2,5\}' test.txt 查找2-5个0的字符串
正则表达式中的特殊字符 和 一般命令行输入命令的通配符 并不相同
例: 命令中的 ls -alh t* = ls -alh|grep -n 't.*'
grep 支持基础正则表达式 egrep= grep -E 支持扩展正则表达式
扩展正则表达式的特殊符号
+ 重复“1个或1个以上的字符 egrep -n 'go+d' test.txt (god good goood ....)
? 零或一个字符 egrep -n 'g?d' test.txt (gd god)
| 或者or egrep -n 'gd|good' test.txt (找出gd或者good)
() 里面包含字符串 egre -n 'g(a|oo)d' test.txt (找出gad或good)
反向选择 [^a-z] 而不是 [!a-z]
格式化显示 printf "格式" 内容
格式: \a 警告声音输出 \b (backspace)退格键 \f 清屏 \n输出新的一行 \t tab
\v table \xNN NN为两位数的数字可转换为字符 %ns字符串 s=string %ni 整数数字 i=integer %N.nf 小数 f=floating %10.2f 整数10位 小数2位
sed /awk 会有专门的文章
文件比较
diff [-bBi] from-file to-file from-file为原始文件 to-file为比较文件
-b 忽略一行的空白差异 -B忽略空白行的差异 -i 忽略大小写
d delete c create
内容更新 patch
patch -pN < patch_file -P 取消N层目录
文件打印 pr
pr /home/sysadm/test.txt
最后附一个自己最常用的表达式
find ./ -mtime +90 -name "*.html*" -exec rm -rf {} \;
再来一个杀oracle数据库死锁的
kill -9 `ps -ef |grep "oraclenewplt (LOCAL=NO)" |awk -F ' ' '{print $2}'`
阅读(1157) | 评论(0) | 转发(0) |