linux其实和internet同样,都是一个充满了大量信息、数据的东西,如何有效的过滤本身不用的信息、获取有用的信息反映了一我的水平的高低,这时候用各类工具与正则的结合变的异常强大python
正则表达式(regular expression)描述了一种字符串匹配的模式,能够用来检查一个串是否含有某种子串、将匹配的子串作替换或者从某个串中取出符合某个条件的子串等。linux
awk 对于从大的数据文件中抽取指定的数据包十分有用,好比你能够用他来管理passwd文件,或者是日志文件(至关巨大的文件,而用了awk就会变的很轻松了),一般awk都是和grep结合来用的,用grep抽出行,再用awk抽出行中指定的列,不过就算单独用awk也同样好用。git
正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就能够处理正则表达式的字符串。find、vim、grep、awk 、sed 都支持正则表达式,也正是由于因为它们支持正则,才显得它们强大正则表达式
正则能够在许多种express
不一样的unix/linux 程序中使用,例如:find,grep,expr,vi,sed等编程
不一样的编程语言中使用,例如:awk,perl,python等vim
在不一样的程序与语言中有一些差别编程语言
下面的都是典型的通用概念,工具
预约义字符类post
[:alnum:] Alphanumeric characters.
[:alpha:] Alphabetic characters.
[:blank:] Space or tab characters.
[:cntrl:] Control characters.
[:digit:] Numeric characters.
[:graph:] Characters that are both printable and visible. (A space is printable, but not visible, while an a is both.)
[:lower:] Lower-case alphabetic characters.
[:print:] Printable characters (characters that are not control characters.)
[:punct:] Punctuation characters (characters that are not letter, digits, control characters, or space characters).
[:space:] Space characters (such as space, tab, and formfeed, to name a few).
[:upper:] Upper-case alphabetic characters.
[:digit:] Characters that are hexadecimal digits.
grep 支持三种正则 基本 扩展 perl
正则表达式语法支持状况
命令或环境 | . | [ ] | ^ | $ | \( \) | \{ \} | ? | + | | | ( ) |
vi | X | X | X | X | X | |||||
Visual C++ | X | X | X | X | X | |||||
awk | X | X | X | X | X | X | X | X | ||
sed | X | X | X | X | X | X | ||||
Tcl | X | X | X | X | X | X | X | X | X | |
ex | X | X | X | X | X | X | ||||
grep | X | X | X | X | X | X | ||||
egrep | X | X | X | X | X | X | X | X | X | |
fgrep | X | X | X | X | X | |||||
perl | X | X | X | X | X | X | X | X | X |
命令名 | 正则 | 通配 |
ls | * | |
grep | * | * |
find | * | |
sed | * | |
awk | * |
[root@250-shiyan ~]# df|sed -n '/\/$/p'|awk '{print $5}'|sed 's/%//'
[root@250-shiyan ~]# df|grep "/$"|awk '{print $5}'|sed 's/%//' grep awk sed 合称拼命三郎或三剑客
cut也是一个比较强大的工具,能够对一行字符串进行多种模式匹配的剪切操做,也能够对一个排列很是整齐的文本进行操做
cut -d ':' -f 2 以分隔符为界
cut -c 2-5 以字母为界
grep主要对行过滤查找
sed options ‘command’ file
options
p 打印
s 搜索
sed和grep主要是对文本进行“行”的操做,sed与awk是文本处理工具
awk方法主要是对文本进行“列”的操做,awk会把每一列都取一个名字,从第一列开始:分别为$1,$2...$n
awk [-F] "field-operator" 'comand' inputfiles
-F和field-operator一块儿使用,field-operator是域分隔符,若是不使用-F选项,则默认的域分隔符为空格。后面command命令通常须要用一堆“{}”括起来,而后进行必要的操做
sed -n 只将符合模式的行列出来
命令名 | 列操做 | 行操做 | 输入 |
cut | input file std input - |