shell编程学习(4)

======================================================================
                          第四篇
======================================================================

1、创建和使用函数
name(){
  list;
}
2、head和tail命令
head -n file :显示文件的前n行
tail -n file :显示文件的后n行
tail -f file :查看正在被写入的文件
3、使用grep命令
grep word file               区分大小写
grep -i word file            不区分大小写
grep -v word file            不包含特殊单词的行
grep -n word file            显示行
grep -l word file1,file2,file3  列出包含特殊单词的文件
4、统计单词数
wc:统计指定文件中的字节数、字数、行数, 并将统计结果显示输出
tr:将一个集合中的所有字符改成另一个集合中的所有字符。有时也可用于删除字符。
sort:为输入文件中的行进行分类,若没有指定输入文件,它为STDIN中给出的行分类。
uniq:打印出文件中所有唯一行。
5、统计单词数举例
tr 'set1' 'set2' < file:将file中所有set1字符转换成set2字符
tr '!?":;{}(),.' ' ' < filename:替换基本标点符号
tr -s 'set1' :压缩set1,一般用于压缩空格
tr '!?":;\[\]{}(),.\t\n-' ' ' < file | tr 'A-Z' 'a-z'|tr ' ' '\n'| sort  排序文件中所有单词
sort -u 去掉所有重复的单词
uniq 只为重复行保留一行作为副本
tr '!?":;\[\]{}(),.\t\n-' ' ' < file | tr 'A-Z' 'a-z'|tr -s|tr ' ' '\n'| sort | uniq -c | sort -rn | head 重复次数最多的单词
tr '[:punct:]' ' ' < getopt.log | tr '[:space:]' ' ' | tr 'A-Z' 'a-z'|tr -s ' ' |tr ' ' '\n'| sort | uniq -c | sort -rn |head 不带任何标点符号的
6、tr可以识别的标识
alnum    字母和数字
alpha    字母
blank    水平白色空格
cntrl    控制字符
digit    数字
graph    可打印字符,不包括空格
lower    小写字符
print    可打印字符,包括空格
punct    标点符号
space    水平或垂直空格
upper    大写字符
xdigt    16进制数字
7、awk和sed命令
如何执行:
1)从输入文件中读取一行
2)为该行做一个拷贝
3)在该行上执行所给的脚本script
4)为下一行重复1)
awk/sed '/pattern/action' filenames
8、当awk或sed正在执行一个脚本时
1)顺序搜索每个模式pattern,直到发生一个匹配
2)当发生匹配时,为输入行执行相应的动作(action)
3)当action执行完毕,到达下一个模式(pattern)并重复1)
4)当所有模式都试过一遍,读取下一行
9、正则表达式
正则表达式中可以使用
普通字符:包括大小写字母、数字、字符
元字符:是指在正则表达式中有特殊含义的、可以被扩展从而匹配普通字符的字符。
用于正则表达式的元字符
.            匹配任何除换行符外的单个字符
*            匹配恰处于*字符前的零个或多个所给的字符
[chars]      匹配在chars中出现的任意一个字符,chars是一个字符序列。
^            匹配一行的开始
$            匹配一行的结尾   
\            用于消除通配符
10、一些有用的正则表达方式
空行               /^$/
整行               /^.*$/
一个或多个空       / * /
HTML或XML标记      /<[^>][^>]*/
有效的URL          /[a-zA-Z][a-zA-Z]*:\/\/[a-zA-Z0-9][a-zA-Z0-9\.]*.*/
美元数量格式       /\$[0-9]*\.[0-9][0-9]/
11、sed可以使用的action
p                       打印该行
d                       删除该行
s/pattern1/pattern2/    用第二种模式pattern2替换第一种模式pattern1

======================================================================
以上内容为本人学习的一点体会和总结,如有不正确之处,请指出,不甚感激
======================================================================

你可能感兴趣的:(正则表达式,脚本)