字符 | 代表意义 |
[: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:] | 标点符号,即” “ ? ! ; : # $ |
[upper:] | 大写字符,即A-Z |
[:space:] | 任何会产生空白的字符,包括空格键[Tab] CR等 |
[:xdigit:] | 十六进制的数字类型,因此包括0-9,A-F,a-f的数字与字符 |
|
|
^word | 意义:待查找的字符串(word)在行首。 例子:查找行首为#开始的那一行,并列出行号:grep –n ‘^#’ file.txt |
word$ | 意义:待查找的字符串(word)在行尾。 例子:将行尾为!的那一行打印出来,并列出行号:grep –n ‘!$’ file.txt |
. | 意义:代表一定有一个任意字符的字符。 例子:查找的字符串可以是(eve) (eae) (eee) (ee),但不能仅有(ee),即e与e中间一定仅有一个字符,而空格符也是字符:grep –n ‘e.e’ file.txt |
\ | 意义:转义字符,将特殊符号的特殊意义去除。 例子:查找含有单引号’的那一行:grep –n \’ file.txt |
* | 意义:重复零个到无穷多个的前一个字符。 例子:找出(es) (ess) (esss)等的字符串,注意,因为*可以是0个,所以es也是符合待查找字符串。另外,因为*为重复“前一个字符RE”的符号,因此,在*之前必须要紧接着一个RE字符:grep –n ‘ess*’ file.txt |
[list] | 意义:从字符集合的RE字符里面找出想要选取的字符。 例子:查找含有(gl)或(gd)的那一行需要特别留意的是,在[]当中代表一个待查找的字符,a[afl]y代表查找的字符串可以是aay,afy,aly即[afl]代表a或f或l的意思: grep –n ‘g[ld]’ file.txt |
[n1-n2] | 意义:从字符集合的RE字符里面查找出想要选取的字符范围。 例子:查找含有任意数字的那一行,grep –n ‘[0-9]’ file.txt |
[^list] | 意义:从字符集合的RE字符里面找出不要的字符串或范围。 例子:查找的字符串可以是(oog) (ood)但不能使(oot),grep –n ‘oo[^t] file.txt |
\{n,m\} | 意义:连续n到m个的前一个RE字符,若为\{n\}则是连续n个的前一个RE字符,若为\{n,\}则表示连续n个以上的前一个RE字符。 例子:在g与g之间有2个到3个的o存在的字符串grep –n ‘go\{2,3\}g’ file.txt |
| 扩展正则表达式,使用grep –E 或 egrep |
+ | 意义:重复一个或一个以上的前一个RE字符 例子:查找(god) (good) (goood)等的字符串。那么o+代表一个以上的o egrep –n ‘go+d’ file.txt |
? | 意义:零个或一个的前一个RE字符 例子:查找(gd) (god)这两个字符串。那个o?代表空的或1个o, egrep –n ‘go?d’ file.txt |
| | 意义:用或(or)的方式找出多个字符串 例子:查找gd或good这两个字符串 egrep –n ‘gd|good’ file.txt |
( ) | 意义:找出“组”字符串 例子:查找(glad)或(good)这两个字符串,以为g与d是重复的,所以可以将la与oo列于( )当中,并以|分隔开 egrep –n ‘g(la|oo)d’ file.txt |
( )+ | 意义:多个组重复组的判别 例子:查找AxyzxyzxyzxyzC egrep ‘A(xyz)+C’ file.txt |
二、cut、grep、sort、wc、uniq
1. cut
cut-d ‘分割字符' -f fields
cut -c 字符范围(n),从第n个字符开始
参数:
-d:后面接分割符,与-f一起使用;
-f:依据-d的分割符将一段信息切割成为数据段,用-f取出第几段的意思;
-c:以字符的单位取出固定字符区间。
例子:echo $PATH|cut -d ’:' -f 3,5。以:进行分割,然后取出第三和第五段
2. grep
grep[-acinv] [-A] [-B] [--color=auto] '查找字符串' filename
参数:
-a:将binary文件以text文件的方式查找数据;
-c:计算找到’查找字符串‘的次数;
-i:忽略大小写的不同
-n:顺便输出行号
-v:反向选择,即显示出没有’查找字符串‘内容的那一行
-A:后面可加数字,为after的意思,除了列出该行外,后续的n行也列出来
-B:后面可加数字,为befor的意思,除了列出该行外,前面的n行也列出来
--color=auto:找到的关键字部分会用特殊颜色显示
grep --color=auto wang files,在files文件中查找字符wang
3. sort
sort [-fbMnrtuk] [file or stdin]
参数:
-f:忽略大小写的差异
-b:忽略最前面的空格符部分
-M:以月份的名字来排序
-n:使用‘纯数字’进行排序(默认是以文字类型来排序的)
-r:反向排序
-u:就是uniq,相同的数据中,仅出现一行代表
-t:分割符,默认是用tab键来分隔
-k:以那个区间来进行排序的意思
例子:files文件中内容
adm:x:3:4:adm:/var/adm
bin:x:1:1:bin
apache:x:48:48
daemon:x:2:2
cat files | sort 默认以文字类型排序
adm:x:3:4:adm:/var/adm
apache:x:48:48
bin:x:1:1:bin
daemon:x:2:2
cat files | sort -t ':' -k 3 以‘:’来分隔,以第三个排序
bin:x:1:1:bin
daemon:x:2:2
adm:x:3:4:adm:/var/adm
apache:x:48:48
4. uniq 去重
uniq [-ic]
参数:
-i:忽略大小写字符
-c:进行计数
例子:
last | cut -d ' ' -f 1 | sort |uniq (其中last查看登录信息)
reboot
wtmp
wyl
last | cut -d ' ' -f 1 | sort |uniq -c
7 reboot
1 wtmp
14 wyl
5. wc计算输出信息的整体数据,行数、字数、字符数
wc [-lwm]
参数:
-l:仅列出行
-w:仅列出多少单词
-m:多少字符数