SA118中文翻译 5 Solaris8入门教材( 三 )


-rw-r--r-- 1 user1 staff 0 Feb 25 12:54 file.3
-rw-r--r-- 1 user1 staff 156 Mar 1 14:48 file2
-rw-r--r-- 1 user1 staff 218 Mar 1 11:36 feathers
-rw-r--r-- 1 user1 staff 218 Mar 1 11:36 feathers_6
$
第一个示例把ls命令的输出保存在文件list中,然后使用cat命令来查看文件内容 。
第一条sort命令对第五个域产生一个反向、数字排序,排序的结果保存到文件num.list中 。
第二条sort命令对文件list的域6和7进行多层排序,选项 5M对第6个域月份项按字母顺序排序,6n对第7域天按数字顺序进行第二层排序,所有的排序结果保存在update.list文件中 。

搜索文件中的文本
Solaris操作环境提供了一系列命令用于在一个或者多个文件中搜索特定的字符模式 。模式可以是一个单字符、字符串、单词或者句子 。
由定义,用于匹配一个搜索中的相同字符的字符模式称为正则表达式 。用于搜索正则表达式的命令称为grep、egrep和fgrep 。
Grep命令用于在一个文件中搜索正则表达式,把所有包含正则表达式的行送标准输出 。
Egrep和fgrep命令是grep命令的变体,称为扩展grep和快速grep 。
使用grep命令
grep命令用于在一个或者多个文件中搜索字符模式或者正则表达式,把每一行包含有指定字符模式的行输出到屏幕,但这并不改变文件内容 。
命令格式
grep –options pattern filenames
选项
-i忽略大小写,大写字母和小写字母认为是相同的
-l只是列出带匹配行的文件名称
-n在每一行之前加上行号
-v列出所有不匹配的行
-c只是列出包含pattern的行数
正则表达式中的元字符
grep命令支持几个元字符用来进一步定义搜索模式 。下面列出常用的几个基本的元字符
^行开始标识符‘^pattern"匹配所有以pattern开头的行
$行结束标识符‘pattern$"匹配所有以pattern结束的行
.匹配一个字符‘p…..n"匹配所有包含有以p开头后跟五个字符,紧接着跟一个字符的行
*[a-z]*匹配小写字符
[]匹配模式中的单个字符‘[pP]attern"匹配包括pattern和Pattern模式的行
[^]匹配不在模式中单个字符‘[a^m]attern"匹配以a到m结尾attern的所有行
使用grep命令搜索正则表达式的示例
下面的示例使用grep命令来搜索正则表达式,要搜索文件/etc/group中的所有包含有模式root的行,执行下面的命令:
$ grep -n root /etc/group
1:root::0:root
3:bin::2:root,bin,daemon
4:sys::3:root,bin,sys,adm
5:adm::4:root,adm,daemon
6:uucp::5:root,uucp
7:mail::6:root
8:tty::7:root,tty,adm
9:lp::8:root,lp,adm
10:nuucp::9:root,nuucp
12:daemon::12:root,daemon
$
要搜索文件/etc/group中的所有不包含有模式root的行,执行下面的命令:
$ grep -v root /etc/group
other::1:
staff::10:
nobody::60001:
noaccess::60002:
sun4prog::100:
funda::105:
cprg::170:
csh::180:
sysadmin::14:
fire::20:
sl300::30:
java::190:
cplus::700:
sysint::1000:
internals::2000:
sunnetmgr::3000:
OpenWindows::5000:
SAE::5500:
guest::20000:guest,kbrown
$
只是搜索文件名称中包含模式root,执行如下命令:
$ cd /etc
$ grep -l root group passwd hosts
group
passwd
$
需要在目录/etc中的所有文件中搜索模式the,只是列出匹配模式the和The的文件名称,执行下面示例:
$ cd /etc
$ grep -li the *
$ cd /etc
$ grep -li the *
aliases
asppp.cf
dacf.conf
device.tab
devlink.tab
dgroup.tab
fmthard
format

syslog.conf
system
termcap
TIMEZONE
ttysrch
umountall
grep: can"t open utmppipe
$
需要在文件/etc/group中搜索模式root,并且只打印包含该模式的行数,执行下面的命令:
$ grep -c root group
10

推荐阅读