没有合适的资源?快使用搜索试试~ 我知道了~
《UnixShell实例精解》-学习笔记.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 131 浏览量
2022-06-22
08:51:47
上传
评论
收藏 292KB DOC 举报
温馨提示
试读
26页
《UnixShell实例精解》-学习笔记.doc
资源推荐
资源详情
资源评论
《Unix Shell 实例精解》学习笔记
By Turner
第一章 关于 UNIX Shell 的介绍
1. 定义
shell 是一种特殊的程序,被用作用户与内核(kernel)的 UNIX 操作系统核心
通讯。常见的 shell 有 C shell、B shell 和 Korn shell(B shell 的超集)。
2. shell 主要功能
● 解释交互运行时,在命令行提示下敲入的命令
● 制订用户环境,通常在 shell 初始化文件中作这种工作。例如:设置终端键及窗口特征;设置搜索路径、
权限、提示等
● shell 可以用作解释编程语言。Shell 程序也叫命令表,由再文件中列出的命令组成。
3. 主要 shell 命令:
who mv rm wc ls cat date at
lpr rsh more awk pwd bc vi finger w
pg find cc cp dd grep ksh sh
ps sed cal lp
第 2 章 UNIX 工具箱
1.正则表达式
一个正则表达式就是用来在一次搜索中匹配相同字符的一个字符模式。在大
多数程序中,把一个正则表达式封装在正斜杠(/)里。
2.正则表达式元字符
元字符 功能 实例 解释
^
行开头定位
/^love/
与所有love开头的行匹配
$
行末尾定位
/love$/
与所有love结尾的行匹配
.
匹配单个字
符
/l..e/
与包含一个l,后跟两个字符,然后跟一个e的
行相匹配
*
跟前驱的 0
个或多个字
/ *love/
跟0个或多个空格后面的love模式的行相匹配
1
符相匹配
[]
与其中的一
个相匹配
/[Ll]ove/
与包含love或者Love的行匹配
[x-z]
与集中一个
范围内的一
个字符相匹
配
/[A-Z]ove/
与后面跟ove的从A到Z的字相匹配
[^]
与不在集里
的字符匹配
/[^A-Z]ove/
不包括A到Z,后面跟ove的字相匹配
\
给一个元字
符转移
/love\./
匹配行包括love,跟一个句点
许多用RE元字符的UNIX程序支持的附加元字符(vi 和 grep支持)
\<
词开头定位
/\<love/
匹配行包含用love开头的词
\>
词结尾定位
/love\>/
匹配行包含love结尾的词
\(..\)
标志与以后
用的字符相
匹配
/(love\)able\ler/
Able可达9个标志,模式最左边用第一个标志
开始。例如,模式love保存作标志l,以后引用
作 \l; 在 这 个 例 子 中 , 搜 索 模 式 包 括 后 面 跟
lover的lovable
x\{m\}
x\{m,\}
x\
{m,n\}
字符x重 复
m次
至少m次
m到n次
O\{5,10\}
如果行包含5—10个连续的o则匹配
表(2.1)
3.举例
查找文件中的含有 love 的词:
% vi picnic
I had a lovely time on our little picnic. Lovers were all around us, oh love
:/love/
4.组合正则表达式元字符
文件内容:(数字是行号,竖线标明行的左右边界,不属于文件内容。这个文件我写在 shell/exam/exam_2.9
中)
1 |Christian Scott lives here and will put on a Christmas party.|
2 |There are around 30 to 35 people invited.|
3 |They are: |
4 | Tom|
5 |Dan|
6 | Rhonda Savage|
7 |Nicky and Kimerly.|
8 |Steve, Suzanne, Ginger and Larry.|
组合举例:
2
/^[A-Z]..$/
搜索行以 A 至 Z 的一个字母开头,然后跟两个任意字母,然后跟一个换行符的行。将找到第 5 行。
/^[A-Z][a-z]*3[0-5]/
搜索以一个大写字母开头,后跟 0 个或多个小写字母,再跟数字 3,再跟 0—5 之间的一个数字。
*[A-Z][a-z][a-z]$/
搜索以 0 个或多个空格开头,跟一个大写字母,两个小写字母和一个换车符。将找到第 4 行的 TOM(整行
匹配)和第 5 行。注意,*前面有一个空格。
/^[A-Za-z]*[^,][A-Za-z]*$/
将查找以 0 个或多个大写或小写字母开头,不跟逗号,然后跟 0 个或多个大写或小写字母,然后跟一个换
车符。将找到第 5 行。书中解释有误。
5.更多的正则表达式元字符
这里讨论的元字符不一定可以移植到所有的正则表达式中,但一般可以用在 vi、sed 和 grep 中。
% vi textfile
-----------------------------------------------------------------------
Patty won fourth place in the 50 yard dash square and fair.
Occurences like this are rare.
Haha, what you want is just fourth.
~
~
:/\<fourth\>/
将查找词 fourth
第 3 章 grep 家族
1.grep 的含义是“全局搜索正则表达式(RE)并打印该行”
2.grep 支持的正则表达式
与在文件中搜索基本一样。可以参考表 2.1。
3.grep 的选项
选项 功能
-b
在各行之前放置它发现的块号。有时在根据上下文定位磁盘字块时有用
-c
显示匹配行数而不是内容
-h
不显示文件名
-I
在座比较时忽略字母大小写
-n
文件中每行之前给出它的相关行号
-s
无声操作。即除了错误消息外不做任何显示。用于检查退出状态
-v
把搜索翻转为只显示不匹配的行
-w
把表达式当作一个次来搜索,相当于用\<和\>括起来
表 3.1
4.grep 命令的退出状态
如果 grep 操作成功,则状态是 0,如果模式没找到,状态是 1,如果文件没
找到,状态是 2。如果操作被取消,则状态是 130。查看状态的方法:在 csh
3
中用 echo $status。在 sh 和 ksh 中用 echo $? 。例如
$ echo $?
0
5.带正则表达式的 grep 举例:
用于这些例子的文件叫 datafile,位于 chap03 目录。内容如下:
northwest NW Charles Main 3.0 .98 3 34
western WE Sharon Gray 5.3 .97 5 23
southwest SW Lewis Dalsass 2.7 .8 2 18
southern SO Suan Chin 5.1 .95 4 15
southeast SE Patricia Hemenway 4.0 .7 4 17
eastern EA TB Savage 4.4 .84 5 20
northeast NE AM Main Jr. 5.1 .94 3 13
north NO Margot Weber 4.5 .89 5 9
central CT Ann Stephens 5.7 .94 5 13
1) grep NW datafile
解释:打印 datafile 中包含 NW 的行
2) grep NW d*
解释:打印所有以 d 开头的文件中含有 NW 的文件。
3) grep '^n' datafile
解释:打印文件 datafile 中所有以字母 n 开头的行
4) grep TB Savage datafile
解释:在 Savage 和 datafile 文件中查找有 TB 的行
5) grep 'TB Savage' datafile
解释:在 datafile 文件中查找含有 TB Savage 的行并打印。这个例子在书中有误。
6) grep '^[we]' datafile
打印 datafile 中以 w 或者 e 开头的行
7) grep 'ss* ' datafile
northwest NW Charles Main 3.0 .98 3 34
southwest SW Lewis Dalsass 2.7 .8 2 18
解释:打印所有包含一个 s 并跟 0 个或者多个 s,然后跟一个空格的行
6.用管道的 grep
grep 可以从管道得到输入。
% ls –l
drwxr-xr-x 6 oracle dba 512 4 月 3 21:49 chap10
drwxr-xr-x 2 oracle dba 512 4 月 10 22:23 exam
-rwxr--r-- 1 oracle dba 1842 4 月 3 21:51 readme.txt
-rwxr--r-- 1 oracle dba 1801 4 月 3 21:51 unix_readme.txt
% ls –l | grep '^d'
drwxr-xr-x 6 oracle dba 512 4 月 3 21:49 chap10
drwxr-xr-x 2 oracle dba 512 4 月 10 22:23 exam
% ls -l |grep '^[^d]'
-rwxr--r-- 1 oracle dba 1842 4 月 3 21:51 readme.txt
-rwxr--r-- 1 oracle dba 1801 4 月 3 21:51 unix_readme.txt
7.带选项的 grep 举例:
4
grep –c ‘west’ datafile
3
解释计算 datafile 中含有 west 的总数。
8.egrep (扩展的 grep)
egrep 可以使用额外的正则表达式,如下表。
元字
符
功能 例子 解释
+
匹配一个或多个前驱字
符
'[a-z]+ove'
匹配一个或多个小写字母,后跟
ove
?
匹配0个或者1个前驱字
符
'lo?ve'
将找到love或love
a|b
匹配a或者b
'love|hate'
与love或hate匹配
()
组字符
'lov(ely|able)
与lovely或lovable匹配
表 3.2
9.egrep 举例:
egrep '2\.?[0-9]' datafile
解释:打印所有这样的行:它包含一个 2,后跟 0 个或者一个句号,然后跟一个数字。
10. fgrep
fgrep 把所有的元字符都当作字符本身,只代表自己。
11. UNIX 工具试验参考答案(内容参考 datebook)
● 打印包含 San 的行
grep 'San' datebook
● 打印所有以 J 开头的人名所在的行
grep '^J' datebook
● 打印以 700 结尾的行
grep '700$' datebook
● 打印所有不包含 834 的行
grep -v '834' datebook
● 打印出生在 12 月(December)的行
grep '/12' datebook
● 打印工资是 6 位数的行,并给出行号
grep -n '[0-9]\{6,\}$' datebook
第 4 章 流编辑器(sed)
1. sed 命令简介
sed 是流线型、非交互式编辑器。它允许你执行与 vi 和 ex 编辑器里一样的编辑任务。Sed 程序不是与编辑
器交互式工作的,而是让你在命令行里敲入编辑的命令,给文件命名,然后在屏幕上查看命令输出结果。
2. sed 如何工作
5
剩余25页未读,继续阅读
资源评论
智慧安全方案
- 粉丝: 3607
- 资源: 59万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功