1.正则表达式
首先,必须知道命令是否支持正则表达式,不然的话只能使用bash的通配符。
然后,一定要分清楚通配符和正则的区别:
通配符*表示任意字符(包括数量),而在正则中*表示任意数量个前一字符
通配符?表示一个字符,在正则中用.表示一个字符
正则表达式分为基础正则和扩展正则
注意,[ ]中的字符集跟编码由关,比如[a-z],是表示a的编码到z的编码之间所有的字符,但是这个不是统一的,比如,当LANG=zh_TW 时编码顺序是0 1 2 3 4 ... a A b B c C d D ... z Z
一些特殊符号:
- 特殊符号 代表意义
- [: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 的数字与字元
注意一点,这里的[ ]不能取代上面所说的[ ],比如[:digit:]表示0-9,如果要是用,外面还要再包一层[ ], [[:digit:]]
grep的一些进阶选项:
- [root@www ~]# grep [-A] [-B] [--color=auto] '搜寻字串' filename
- 选项与参数:
- -A :后面可加数字,为 after 的意思,除了列出该行外,后续的 n 行也列出来;
- -B :后面可加数字,为 befer 的意思,除了列出该行外,前面的 n 行也列出来;
- --color=auto 可将正确的那个撷取资料列出颜色
2.sed
灰常强大,灰常有用的工具,和awk一起称为流编辑的倚天剑屠龙刀啊,甚至可以看做是两门语言
sed是源于行编辑器ed的非交互式的流(stream-oriented)编辑器。记住它是一个编辑器,是和vi一类的东西。sed之所以称为“流”编辑器,是因为象大多数UNIX程序一样,输入流过它,然后被导向标准输出。sed编辑器逐行处理文件(或输入),把当前处理的行存储在称为“模式空间”(pattern space)的临时缓冲区中,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。sed处理完一行后将其从模式空间中删除,然后读入下一行进行处理和输出。应注意sed是对一行使用完了所有指令后再转到下一行的。sed的这种选择使得它可以方便地处理大文件(不必将整个文件一次读进内存)。sed是对文件副本进行编辑和修改,所以不用担心会修改或破坏原文件(除非是用了i参数)。sed主要用来自动编辑一个或多个文件,简化对文件的反复操作和编写转换程序等。
注意上面划线部分,要用它来理解sed中的所有操作
要想完全掌握这个命令似乎要修炼很久啊,先把最基础的掌握吧
(感觉这篇文章还不错 http://doc.linuxpk.com/80440.html)