楼主: bnso

Linux Shell介绍

[复制链接]
论坛徽章:
49
NBA季后赛之星
日期:2014-10-19 19:51:33蓝锆石
日期:2014-10-19 19:51:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33问答徽章
日期:2014-04-15 10:41:44优秀写手
日期:2014-07-24 06:00:11保时捷
日期:2014-10-19 19:51:33三菱
日期:2014-10-19 19:51:33
41#
 楼主| 发表于 2006-8-13 18:40 | 只看该作者
第6章命令执行顺序
在执行某个命令的时候,有时需要依赖于前一个命令是否执行成功。例如,假设你希望
将一个目录中的文件全部拷贝到另外一个目录中后,然后删除源目录中的全部文件。在删除
之前,你希望能够确信拷贝成功,否则就有可能丢失所有的文件。
在本章中,我们将讨论:
• 命令执行控制。
• 命令组合。
如果希望在成功地执行一个命令之后再执行另一个命令,或者在一个命令失败后再执行
另一个命令,& &和| |可以完成这样的功能。相应的命令可以是系统命令或s h e l l脚本。
S h e l l还提供了在当前s h e l l或子s h e l l中执行一组命令的方法,即使用()和{ }。

使用道具 举报

回复
论坛徽章:
49
NBA季后赛之星
日期:2014-10-19 19:51:33蓝锆石
日期:2014-10-19 19:51:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33问答徽章
日期:2014-04-15 10:41:44优秀写手
日期:2014-07-24 06:00:11保时捷
日期:2014-10-19 19:51:33三菱
日期:2014-10-19 19:51:33
42#
 楼主| 发表于 2006-8-13 18:40 | 只看该作者
6.1 使用&&
使用& &的一般形式为:
命令1 && 命令2
这种命令执行方式相当地直接。& &左边的命令(命令1)返回真(即返回0,成功被执行)
后,& &右边的命令(命令2)才能够被执行;换句话说,“如果这个命令执行成功& &那么执
行这个命令”。
这里有一个使用& &的简单例子:
在上面的例子中, & &前面的拷贝命令执行成功,所以& &后面的命令( e c h o命令)被执
行。
再看一个更为实用的例子:
$ mv /apps/bin /apps/dev/bin && rm -r /apps/bin
在上面的例子中,/ a p p s / b i n目录将会被移到/ a p p s / d e v / b i n目录下,如果它没有被成功执行,
就不会删除/ a p p s / b i n目录。
在下面的例子中,文件q u a r t e r _ e n d . t x t首先将被排序并输出到文件q u a r t e r. s o r t e d中,只有
这一命令执行成功之后,文件q u a r t e r. s o r t e d才会被打印出来:
$ sort quarter_end.txt > quarter.sorted && lp quarter.sorted
6.2 使用||
使用| |的一般形式为:
命令1 || 命令2
| |的作用有一些不同。如果| |左边的命令(命令1)未执行成功,那么就执行| |右边的命令
(命令2);或者换句话说,“如果这个命令执行失败了|| 那么就执行这个命令”。
这里有一个使用| |的简单例子:
在上面的例子中,拷贝命令没有能够被成功执行,因此| |后面的命令被执行。
这里有一个更为实用的例子。我希望从一个审计文件中抽取第1个和第5个域,并将其输
出到一个临时文件中,如果这一操作未成功,我希望能够收到一个相应邮件:
在这里不只可以使用系统命令;这里我们首先对m o n t h _ e n d . t x t文件执行了一个名为c o m e t
的s h e l l脚本,如果该脚本未执行成功,该s h e l l将结束。

使用道具 举报

回复
论坛徽章:
49
NBA季后赛之星
日期:2014-10-19 19:51:33蓝锆石
日期:2014-10-19 19:51:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33问答徽章
日期:2014-04-15 10:41:44优秀写手
日期:2014-07-24 06:00:11保时捷
日期:2014-10-19 19:51:33三菱
日期:2014-10-19 19:51:33
43#
 楼主| 发表于 2006-8-13 18:41 | 只看该作者
6.3 用()和{ }将命令结合在一起
如果希望把几个命令合在一起执行, s h e l l提供了两种方法。既可以在当前s h e l l也可以在
子s h e l l中执行一组命令。
为了在当前s h e l l中执行一组命令,可以用命令分隔符隔开每一个命令,并把所有的命令
用圆括号()括起来。
它的一般形式为:
(命令1;命令2;. . .)
如果使用{ }来代替(),那么相应的命令将在子s h e l l而不是当前s h e l l中作为一个整体被执
行,只有在{ }中所有命令的输出作为一个整体被重定向时,其中的命令才被放到子s h e l l中执
行,否则在当前s h e l l执行。它的一般形式为:
{命令1;命令2;. . . }
我很少单独使用这两种方法。我一般只和& &或| |一起使用这两种方法。
再回到前面那个c o m e t脚本的例子,如果这个脚本执行失败了,我很可能会希望执行两个
以上的命令,而不只是一个命令。我可以使用这两种方法。这是原先那个例子:
$ comet month_end.txt || exit
现在如果该脚本执行失败了,我希望先给自己发个邮件,然后再退出,可以用下面的方
法来实现:
在上面的例子中,如果只使用了命令分隔符而没有把它们组合在一起, s h e l l将直接执行
最后一个命令(e x i t)。
我们再回头来看看前面那个使用& &排序的例子,下面是原来的那个例子:
$ sort quarter_end.txt > quarter.sorted && lp quarter.sorted
使用命令组合的方法,如果s o r t命令执行成功了,可以先将输出文件拷贝到一个日志区,
第6章命令执行顺序47
下载
然后再打印。
6.4 小结
在编写s h e l l脚本时,使用& &和| |对构造判断语句非常有用。如果希望在前一个命令执行
失败的情况不执行后面的命令,那么本章所讲述的方法非常简单有效。使用这样的方法,可
以根据& &或| |前面命令的返回值来控制其后面命令的执行。

使用道具 举报

回复
论坛徽章:
49
NBA季后赛之星
日期:2014-10-19 19:51:33蓝锆石
日期:2014-10-19 19:51:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33问答徽章
日期:2014-04-15 10:41:44优秀写手
日期:2014-07-24 06:00:11保时捷
日期:2014-10-19 19:51:33三菱
日期:2014-10-19 19:51:33
44#
 楼主| 发表于 2006-8-13 18:42 | 只看该作者
第二部分文本过滤
第7章正则表达式介绍
随着对U N I X和L I N U X熟悉程度的不断加深,需要经常接触到正则表达式这个领域。使用
s h e l l时,从一个文件中抽取多于一个字符串将会很麻烦。例如,在一个文本中抽取一个词,
它的头两个字符是大写的,后面紧跟四个数字。如果不使用某种正则表达式,在s h e l l中将不
能实现这个操作。
本章内容包括:
• 匹配行首与行尾。
• 匹配数据集。
• 只匹配字母和数字。
• 匹配一定范围内的字符串集。
当从一个文件或命令输出中抽取或过滤文本时,可以使用正则表达式( R E),正则表达式
是一些特殊或不很特殊的字符串模式的集合。
为了抽取或获得信息,我们给出抽取操作应遵守的一些规则。这些规则由一些特殊字符
或进行模式匹配操作时使用的元字符组成。也可以使用规则字符作为模式中的一部分进行搜
寻。例如,A将查询A,x将查找字母x。
系统自带的所有大的文本过滤工具在某种模式下都支持正则表达式的使用,并且还包括
一些扩展的元字符集。这里只涉及其中之一,即以字符出现情况进行匹配的表达式,原因是
一些系统将这类模式划分为一组形成基本元字符的集合。这是一个好想法,本书也采用这种
方式。
本章设计的基本元字符使用在g r e p和s e d命令中,同时结合{ \ \ }(以字符出现情况进行匹配
的元字符)使用在a w k语言中。
表7-1 基本元字符集及其含义
^ 只只匹配行首
$ 只只匹配行尾
* 只一个单字符后紧跟*,匹配0个或多个此单字符
[ ] 只匹配[ ]内字符。可以是一个单字符,也可以是字符序列。可以使用-
表示[ ]内字符序列范围,如用[ 1 - 5 ]代替[ 1 2 3 4 5 ]
\ 只用来屏蔽一个元字符的特殊含义。因为有时在s h e l l中一些元字符有
特殊含义。\可以使其失去应有意义
. 只匹配任意单字符
p a t t e r n \ { n \ } 只用来匹配前面p a t t e r n出现次数。n为次数
p a t t e r n \ { n,\ } m 只含义同上,但次数最少为n
p a t t e r n \ { n,m \ } 只含义同上,但p a t t e r n出现次数在n与m之间
现在详细讲解其中特殊含义。

使用道具 举报

回复
论坛徽章:
49
NBA季后赛之星
日期:2014-10-19 19:51:33蓝锆石
日期:2014-10-19 19:51:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33问答徽章
日期:2014-04-15 10:41:44优秀写手
日期:2014-07-24 06:00:11保时捷
日期:2014-10-19 19:51:33三菱
日期:2014-10-19 19:51:33
45#
 楼主| 发表于 2006-8-13 18:42 | 只看该作者
7.1 使用句点匹配单字符
句点“.”可以匹配任意单字符。例如,如果要匹配一个字符串,以b e g开头,中间夹一个
任意字符,那么可以表示为b e g . n,“.”可以匹配字符串头,也可以是中间任意字符。
在ls -l命令中,可以匹配一定权限:
. . . x . . x . . x
此格式匹配用户本身,用户组及其他组成员的执行权限。
假定正在过滤一个文本文件,对于一个有1 0个字符的脚本集,要求前4个字符之后为X C,
匹配操作如下:
. . . .X C. . . .
以上例子解释为前4个字符任意,5,6字符为X C,后4个字符也任意,按下例运行:
注意,“.”允许匹配A S C I I集中任意字符,或为字母,或为数字。
7.2 在行首以^匹配字符串或字符序列
^只允许在一行的开始匹配字符或单词。例如,使用ls -l命令,并匹配目录。之所以可以
这样做是因为ls -l命令结果每行第一个字符是d,即代表一个目录。
回到脚本( 1),使用^ 0 0 1,结果将匹配每行开始为0 0 1的字符串或单词:
可以将各种模式结合使用,例如:
^ . . . 4 X C . . . .
结果为:
50 第二部分文本过滤
下载
以上模式表示,在每行开始,匹配任意3个字符,后跟4 X C,最后为任意4个字符。^在正
则表达式中使用频繁,因为大量的抽取操作通常在行首。
在行首第4个字符为1,匹配操作表示为:
^ . . . 1
结果为:
行首前4个字符为c o m p,匹配操作表示为:
^ c o m p
假定重新定义匹配模式,行首前4个字符为c o m p,后面紧跟两个任意字符,并以i n g结尾,
一种方法为:
^ c o m p . . i n g
以上例子太明显了,不是很有用,但仍讲述了混合使用正则模式的基本概念。

使用道具 举报

回复
论坛徽章:
49
NBA季后赛之星
日期:2014-10-19 19:51:33蓝锆石
日期:2014-10-19 19:51:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33问答徽章
日期:2014-04-15 10:41:44优秀写手
日期:2014-07-24 06:00:11保时捷
日期:2014-10-19 19:51:33三菱
日期:2014-10-19 19:51:33
46#
 楼主| 发表于 2006-8-13 18:42 | 只看该作者
7.3 在行尾以$匹配字符串或字符
可以说$与^正相反,它在行尾匹配字符串或字符, $符号放在匹配单词后。假定要匹配以
单词t r o u b l e结尾的所有行,操作为:
t r o u b l e $
类似的,使用1 d $返回每行以1 d结尾的所有字符串。
如果要匹配所有空行,执行以下操作:
^ $
具体分析为匹配行首,又匹配行尾,中间没有任何模式,因此为空行。
如果只返回包含一个字符的行,操作如下:
^ . $
不像空白行,在行首与行尾之间有一个模式,代表任意单字符。
如果在行尾匹配单词j e t 0 1,操作如下:
j e t 0 1 $
7.4 使用*匹配字符串中的单字符或其重复序列
使用此特殊字符匹配任意字符或字符串的重复多次表达式。例如:
c o m p u * t
将匹配字符u一次或多次:
另一个例子:
1 0 1 3 3 *
匹配
第7章正则表达式介绍51
下载
7.5 使用\屏蔽一个特殊字符的含义
有时需要查找一些字符或字符串,而它们包含了系统指定为特殊字符的一个字符。什么
是特殊字符?一般意义上讲,下列字符可以认为是特殊字符:
假定要匹配包含字符“ .”的各行而“,”代表匹配任意单字符的特殊字符,因此需要屏蔽
其含义。操作如下:
\ .
上述模式不认为反斜杠后面的字符是特殊字符,而是一个普通字符,即句点。
假定要匹配包含^的各行,将反斜杠放在它前面就可以屏蔽其特殊含义。如下:
\ ^
如果要在正则表达式中匹配以* . p a s结尾的所有文件,可做如下操作:
\ * \ . p a s
即可屏蔽字符*的特定含义。

使用道具 举报

回复
论坛徽章:
49
NBA季后赛之星
日期:2014-10-19 19:51:33蓝锆石
日期:2014-10-19 19:51:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33问答徽章
日期:2014-04-15 10:41:44优秀写手
日期:2014-07-24 06:00:11保时捷
日期:2014-10-19 19:51:33三菱
日期:2014-10-19 19:51:33
47#
 楼主| 发表于 2006-8-13 18:42 | 只看该作者
7.6 使用[]匹配一个范围或集合
使用[ ]匹配特定字符串或字符串集,可以用逗号将括弧内要匹配的不同字符串分开,但并
不强制要求这样做(一些系统提倡在复杂的表达式中使用逗号),这样做可以增加模式的可读
性。
使用“ -”表示一个字符串范围,表明字符串范围从“ -”左边字符开始,到“ -”右边字
符结束。
如果熟知一个字符串匹配操作,应经常使用[ ]模式。
假定要匹配任意一个数字,可以使用:
[ 0 1 2 3 4 5 6 7 8 9 ]
然而,通过使用“-”符号可以简化操作:
[ 0 - 9 ]
或任意小写字母
[ a - z ]
要匹配任意字母,则使用:
[ A - Z a - z ]
表明从A - Z、a - z的字母范围。
如要匹配任意字母或数字,模式如下:
[ A - Z a - z 0 - 9 ]
在字符序列结合使用中,可以用[ ]指出字符范围。假定要匹配一单词,以s开头,中间有
一任意字母,以t结尾,那么操作如下:
s[a-z A-Z]t
52 第二部分文本过滤
下载
上述过程返回大写或小写字母混合的单词,如仅匹配小写字母,可使用:
s [ a - z ] t
如要匹配C o m p u t e r或c o m p u t e r两个单词,可做如下操作:
[ C c ] o m p u t e r
为抽取诸如S c o u t、s h o u t、b o u g h t等单词,使用下列表达式:
[ou] .*t
匹配以字母o或u开头,后跟任意一个字符任意次,并以t结尾的任意字母。
也许要匹配所有包含s y s t e m后跟句点的所有单词,这里S可大写或小写。使用如下操作:
[ S,s ] y s t e m \ .
[ ]在指定模式匹配的范围或限制方面很有用。结合使用*与[ ]更是有益,例如[ A - Z a - Z ] *将
匹配所有单词。
[ A - Z a - z ] *
注意^符号的使用,当直接用在第一个括号里,意指否定或不匹配括号里内容。
[^a-zA-Z]
匹配任一非字母型字符,而
[ ^ 0 - 9 ]
匹配任一非数字型字符。
通过最后一个例子,应可猜知除了使用^,还有一些方法用来搜索任意一个特殊字符。

使用道具 举报

回复
论坛徽章:
49
NBA季后赛之星
日期:2014-10-19 19:51:33蓝锆石
日期:2014-10-19 19:51:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33问答徽章
日期:2014-04-15 10:41:44优秀写手
日期:2014-07-24 06:00:11保时捷
日期:2014-10-19 19:51:33三菱
日期:2014-10-19 19:51:33
48#
 楼主| 发表于 2006-8-13 18:43 | 只看该作者
7.7 使用\{\}匹配模式结果出现的次数
使用*可匹配所有匹配结果任意次,但如果只要指定次数,就应使用\ { \ },此模式有三种
形式,即:
pattern\{n\} 匹配模式出现n次。
pattern\{n,\} 匹配模式出现最少n次。
pattern\{n,m} 匹配模式出现n到m次之间,n , m为0 - 2 5 5中任意整数。
请看第一个例子,匹配字母A出现两次,并以B结尾,操作如下:
A \ { 2 \ } B
匹配值为A A B
匹配A至少4次,使用:
A \ { 4 , \ } B
可以得结果A A A A B或A A A A A A A B,但不能为A A A B。
如给出出现次数范围,例如A出现2次到4次之间:
A \ { 2 , 4 \ } B
则结果为A A B、A A A B、A A A A B,而不是A B或A A A A A B等。
假定从下述列表中抽取代码:
格式如下:前4个字符是数字,接下来是x x,最后4个也是数字,操作如下:
第7章正则表达式介绍53
下载
[ 0 - 9 ] \ { 4 \ }X X[ 0 - 9 ] \ { 4 \ }
具体含义如下:
1) 匹配数字出现4次。
2) 后跟代码x x。
3) 最后是数字出现4次。
结果为:
在写正则表达式时,可能会有点难度或达不到预期效果,一个好习惯是在写真正的正则
表达式前先写下预期的输出结果。这样做,当写错时,可以逐渐修改,以消除意外结果,直
至返回正确值。为节省设计基本模式的时间,表7 - 2给出一些例子,这些例子并无特别顺序。
表7-2 经常使用的正则表达式举例
^ 对行首
$ 对行尾
^ [ t h e ] 对以t h e开头行
[ S s ] i g n a [ l L ] 对匹配单词s i g n a l、s i g n a L、
S i g n a l、S i g n a L
[Ss]igna[lL]\. 对同上,但加一句点
[ m a y M A Y ] 对包含m a y大写或小写字母的

^ U S E R $ 对只包含U S E R的行
[tty]$ 对以t t y结尾的行
\ . 对带句点的行
^ d . . x . . x . . x 对对用户、用户组及其他用户
组成员有可执行权限的目录
^ [ ^ l ] 对排除关联目录的目录列表
[ . * 0 ] 对0之前或之后加任意字符
[ 0 0 0 * ] 对0 0 0或更多个
[ iI] 对大写或小写I
[ i I ] [ n N ] 对大写或小写i或n
[ ^ $ ] 对空行
[ ^ . * $ ] 对匹配行中任意字符串
^ . . . . . . $ 对包括6个字符的行
[a- zA-Z] 对任意单字符
[ a - z ] [ a - z ] * 对至少一个小写字母
[ ^ 0 - 9 \ $ ] 对非数字或美元标识
[ ^ 0 - 0 A - Z a - z ] 对非数字或字母
[ 1 2 3 ] 对1到3中一个数字
[ D d ] e v i c e 对单词d e v i c e或D e v i c e
D e . . c e 对前两个字母为D e,后跟两个
任意字符,最后为c e
54 第二部分文本过滤
下载
(续)
\ ^ q 对以^ q开始行
^ . $ 对仅有一个字符的行
^\.[0-9][0-9] 对以一个句点和两个数字开始
的行
' " D e v i c e " ' 对单词d e v i c e
D e [ V v ] i c e \ . 对单词D e v i c e或d e v i c e
[ 0 - 9 ] \ { 2 \ } - [ 0 - 9 ] \ { 2 \ } - [ 0 - 9 ] \ { 4 \ } 对日期格式d d - m m - y y y y
[ 0 - 9 ] \ { 3 \ } \ . [ 0 - 9 ] \ { 3 \ } \ . [ 0 - 9 ] \ { 3 \ } \ . [ 0 - 9 ] \ { 3 \ } 对I P地址格式nnn. nnn.nnn.nnn
[ ^ . * $ ] 对匹配任意行

使用道具 举报

回复
论坛徽章:
49
NBA季后赛之星
日期:2014-10-19 19:51:33蓝锆石
日期:2014-10-19 19:51:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33问答徽章
日期:2014-04-15 10:41:44优秀写手
日期:2014-07-24 06:00:11保时捷
日期:2014-10-19 19:51:33三菱
日期:2014-10-19 19:51:33
49#
 楼主| 发表于 2006-8-13 18:43 | 只看该作者
7.8 小结
在s h e l l编程中,一段好的脚本与完美的脚本间的差别之一,就是要熟知正则表达式并学
会使用它们。相比较起来,用一个命令抽取一段文本比用三四个命令得出同样的结果要节省
许多时间。
既然已经学会了正则表达式中经常使用的基本特殊字符,又通过一些例子简化了其复杂
操作,那么现在可以看一些真正的例程了。
好,下面将讲述大量的g r e p , s e d和a w k例程。

使用道具 举报

回复
论坛徽章:
49
NBA季后赛之星
日期:2014-10-19 19:51:33蓝锆石
日期:2014-10-19 19:51:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33指数菠菜纪念章
日期:2014-10-19 19:52:33问答徽章
日期:2014-04-15 10:41:44优秀写手
日期:2014-07-24 06:00:11保时捷
日期:2014-10-19 19:51:33三菱
日期:2014-10-19 19:51:33
50#
 楼主| 发表于 2006-8-13 18:43 | 只看该作者
第8章grep 家族
相信g r e p是U N I X和L I N U X中使用最广泛的命令之一。g r e p(全局正则表达式版本)允许
对文本文件进行模式查找。如果找到匹配模式, g r e p打印包含模式的所有行。g r e p支持基本正
则表达式,也支持其扩展集。g r e p有三种变形,即:
G r e p:标准g r e p命令,本章大部分篇幅集中讨论此格式。
E g r e p:扩展g r e p,支持基本及扩展的正则表达式,但不支持\ q模式范围的应用,与之相
对应的一些更加规范的模式,这里也不予讨论。
F g r e p:快速g r e p。允许查找字符串而不是一个模式。不要误解单词f a s t,实际上它与g r e p
速度相当。
在本章中我们将讨论:
• grep(参数)选项。
• 匹配g r e p的一般模式。
• 只匹配字母或数字,或两者混用。
• 匹配字符串范围。
实际上应该只有一个g r e p命令,但不幸的是没有一种简单形式能够统一处理g r e p的三种变
形,将之合而为一,并保持g r e p单模式处理时的速度。GNU grep虽然在融合三种变形上迈进
了一大步,但仍不能区分元字符的基本集和扩展集。上一章只讨论了基本的正则表达式,但
在查看g r e p时也涉及到一些扩展模式的匹配操作。然而,首先还是先讨论一下在g r e p和f g r e p
及e g r e p中均可使用的g r e p模式吧。
开始讨论之前,先生成一个文件,插入一段文本,并在每列后加入< Ta b >键,g r e p命令示
例中绝大多数将以此为例,其命名为d a t a . . f。生成一个文件,但不知其含义,将是一件很枯燥
的事。那么先来看看d a t a . f的记录结构。
第1列:城市位置编号。
第2列:月份。
第3列:存储代码及出库年份。
第4列:产品代号。
第5列:产品统一标价。
第6列:标识号。
第7列:合格数量。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表