linux shell编程指南第九章------AWK 介绍1

为使一域号匹配正则表达式,使用符号‘~’后紧跟正则表达式,也可以用i f语句。a w k
中i f后面的条件用()括起来。

观察文件g r a d e . t x t,如果只要打印b r o w n腰带级别可知其所在域为f i e l d - 4,这样可以写出
表达式{if($4~/brown/) print }意即如果f i e l d - 4包含b r o w n,打印它。如果条件满足,则打印匹

配记录行。可以编写下面脚本,因为这是一个动作,必须用花括号{ }括起来。

[root@localhost huangcd]# awk '{if($4~/Brown/) print $0}' grade.txt
J.Troll     07/99     4842   Brown-3  12   26   26
L.Tansley   05/99     4712   Brown-2  12   30   28

[root@localhost huangcd]# awk '$0~/Brown/' grade.txt 
J.Troll     07/99     4842   Brown-3  12   26   26
L.Tansley   05/99     4712   Brown-2  12   30   28

~表示匹配正则表达式的意思。正则表达式在两个//中间。

假定要使字符串精确匹配,比如说查看学生序号4 8,文件中有许多学生序号包含4 8,如
果在f i e l d - 3中查询序号4 8,a w k将返回所有序号带4 8的记录:

[root@localhost huangcd]# awk '{if($3~/48/) print $0}'  grade.txt 
M.Tansley   05/99     48311  Green    8    40   44
J.Lulu      06/99     48317  green    9    24   26
P.Bunny     02/99     48     Yellow   12   35   28
J.Troll     07/99     4842   Brown-3  12   26   26

为精确匹配4 8,使用等号= =,并用单引号括起条件。例如$ 3 = =“4 8”,这样确保只有4 8
序号得以匹配,其余则不行。

[root@localhost huangcd]# awk '$3=="48" {print $0}' grade.txt 
P.Bunny     02/99     48     Yellow   12   35   28

不匹配:

有时要浏览信息并抽取不匹配操作的记录,与~相反的符号是!~,意即不匹配。像原来使
用查询b r o w n腰带级别的匹配操作一样,现在看看不匹配情况。表达式$0 !~/brown/,意即查
询不包含模式b r o w n腰带级别的记录并打印它。
注意,缺省情况下, a w k将打印所有匹配记录,因此这里不必加入动作部分。

[root@localhost huangcd]# awk '$0 !~ /Brown/' grade.txt 
M.Tansley   05/99     48311  Green    8    40   44
J.Lulu      06/99     48317  green    9    24   26
P.Bunny     02/99     48     Yellow   12   35   28
[root@localhost huangcd]# awk '{if($4!~/Brown/) print $0}' grade.txt 
M.Tansley   05/99     48311  Green    8    40   44
J.Lulu      06/99     48317  green    9    24   26
P.Bunny     02/99     48     Yellow   12   35   28

如果只使用命令awk$4 !="brown"{print $0} grade.txt,将返回错误结果,因为用引号括起
了b r o w n,将只匹配‘b r o w n而不匹配b r o w n - 2和b r o w n - 3,

当然,如果想要查询非b r o w n - 2的腰带级别,可做如下操作:

[root@localhost huangcd]# awk '$4 != "Brown-2" {print $4}' grade.txt
Green
green
Yellow
Brown-3

看哪些学生可以获得升段机会。测试这一点即判断目前级别分f i e l d - 6是否小于最高分
f i e l d - 7,在输出结果中,加入这一改动很容易。

[root@localhost huangcd]# awk '{if($6<$7) print $1" Try better at net comp"}' grade.txt 
M.Tansley Try better at net comp
J.Lulu Try better at net comp

对比小于,小于等于只在操作符上做些小改动,满足此条件的记录也包括上面例子中的
输出情况。

[root@localhost huangcd]# awk '{if($6<=$7) print $1}' grade.txt 
M.Tansley
J.Lulu
J.Troll

大于符号大家都熟知,请看例子:
[root@localhost huangcd]# awk '{if($6>$7) print $1}' grade.txt 
P.Bunny
L.Tansley

设置大小写:

为查询大小写信息,可使用[ ]符号。在测试正则表达式时提到可匹配[ ]内任意字符或单词,
因此若查询文件中级别为g r e e n的所有记录,不论其大小写,表达式应为‘ / [ G g ] r e e n /:’

[root@localhost huangcd]# awk '/[Gg]reen/' grade.txt 
M.Tansley   05/99     48311  Green    8    40   44
J.Lulu      06/99     48317  green    9    24   26


抽取名字,其记录第一域的第四个字符是a,使用句点.。表达式/ ^ . . . a /意为行首前三个字
符任意,第四个是a,尖角符号代表行首。

[root@localhost huangcd]# awk '$1~/^...a/' grade.txt 
M.Tansley   05/99     48311  Green    8    40   44
L.Tansley   05/99     4712   Brown-2  12   30   28

为抽取级别为y e l l o w或b r o w n的记录,使用竖线符|。意为匹配| 两边模式之一。注意,使
用竖线符时,语句必须用圆括号括起来。

[root@localhost huangcd]# awk '$0~/(Yellow|Brown)/' grade.txt 
P.Bunny     02/99     48     Yellow   12   35   28
J.Troll     07/99     4842   Brown-3  12   26   26
L.Tansley   05/99     4712   Brown-2  12   30   28

不必总是使用域号。如果查询文本文件行首包含J的代码,可简单使用下面^符号:
[root@localhost huangcd]# awk '/^J/' grade.txt 
J.Lulu      06/99     48317  green    9    24   26
J.Troll     07/99     4842   Brown-3  12   26   26

复合模式或复合操作符用于形成复杂的逻辑操作,复杂程度取决于编程者本人。有必要
了解的是,复合表达式即为模式间通过使用下述各表达式互相结合起来的表达式:
&& AND : 语句两边必须同时匹配为真。
|| O R:语句两边同时或其中一边匹配为真。
! 非求逆

打印记录,使其名字为‘ P. B u n n y且级别为Ye l l o w,使用表达式( $ 1 = = " P. B u n n y " & &
$ 4 = = " Ye l l o w " ),意为& &两边匹配均为真。完整命令如下:

[root@localhost huangcd]# awk '{if($1=="P.Bunny" && $4=="Yellow") print $0}' grade.txt 
P.Bunny     02/99     48     Yellow   12   35   28

如果查询级别为Ye l l o w或B r o w n,使用或命令。意为“ | |”符号两边的匹配模式之一或全部为真。

[root@localhost huangcd]# awk '{if($4=="Yellow" || $4~/Brown/) print $0}' grade.txt 
P.Bunny     02/99     48     Yellow   12   35   28
J.Troll     07/99     4842   Brown-3  12   26   26
L.Tansley   05/99     4712   Brown-2  12   30   28

a w k有许多内置变量用来设置环境信息。这些变量可以被改变。表9 - 3显示了最常使用的
一些变量,并给出其基本含义。


A R G C支持命令行中传入a w k脚本的参数个数。A R G V是A R G C的参数排列数组,其中每
一元素表示为A R G V [ n ],n为期望访问的命令行参数。
E N V I R O N 支持系统设置的环境变量,要访问单独变量,使用实际变量名,例如
E N V I R O N [“E D I TO R”] =“Vi”。
F I L E N A M E支持a w k脚本实际操作的输入文件。因为a w k可以同时处理许多文件,因此如
果访问了这个变量,将告之系统目前正在浏览的实际文件。
F N R支持a w k目前操作的记录数。其变量值小于等于N R。如果脚本正在访问许多文件,
每一新输入文件都将重新设置此变量。
F S用来在a w k中设置域分隔符,与命令行中- F选项功能相同。缺省情况下为空格。如果用
逗号来作域分隔符,设置F S = ","。
N F支持记录域个数,在记录被读之后再设置。
O F S允许指定输出域分隔符,缺省为空格。如果想设置为#,写入O F S = " # "。
O R S为输出记录分隔符,缺省为新行( \ n)。
R S是记录分隔符,缺省为新行( \ n )。

NF、NR和FILENAME

要快速查看记录个数,应使用N R。比如说导出一个数据库文件后,如果想快速浏览记录
个数,以便对比于其初始状态,查出导出过程中出现的错误。使用N R将打印输入文件的记录
个数。print NR放在E N D语法中。

[root@localhost huangcd]# awk 'END {print NR}' grade.txt 
5

以下例子中,所有学生记录被打印,并带有其记录号。使用N F变量显示每一条读记录中
有多少个域,并在E N D部分打印输入文件名。

[root@localhost huangcd]# awk '{print NF,NR,$0} END{print FILENAME}' grade.txt 
7 1 M.Tansley   05/99     48311  Green    8    40   44
7 2 J.Lulu      06/99     48317  green    9    24   26
7 3 P.Bunny     02/99     48     Yellow   12   35   28
7 4 J.Troll     07/99     4842   Brown-3  12   26   26
7 5 L.Tansley   05/99     4712   Brown-2  12   30   28
grade.txt

在从文件中抽取信息时,最好首先检查文件中是否有记录。下面的例子只有在文件中至
少有一个记录时才查询B r o w n级别记录。使用A N D复合语句实现这一功能。意即至少存在一
个记录后,查询字符串B r o w n,最后打印结果。

[root@localhost huangcd]# awk '{if(NR>0 && $4~/Brown/) print $0}' grade.txt 
J.Troll     07/99     4842   Brown-3  12   26   26
L.Tansley   05/99     4712   Brown-2  12   30   28

N F的一个强大功能是将变量$ P W D的返回值传入a w k并显示其目录。这里需要指定域分隔
符/。

[root@localhost huangcd]# pwd
/home/huangcd
[root@localhost huangcd]# echo $PWD |awk -F / '{print $NF}'
huangcd
[root@localhost huangcd]# echo "usr/local/etc/rc.sybase" |awk -F / '{print $NF}' 
rc.sybase


设置输入域到域变量名:

在a w k中,设置有意义的域名是一种好习惯,在进行模式匹配或关系操作时更容易理解。
一般的变量名设置方式为n a m e = $ n,这里n a m e为调用的域变量名, n为实际域号。例如设置学
生域名为n a m e,级别域名为b e l t,操作为n a m e = $ 1 ; b e l t s = $ 4。注意分号的使用,它分隔a w k命
令。下面例子中,重新赋值学生名域为n a m e,级别域为b e l t s。查询级别为Ye l l o w的记录,并
最终打印名称和级别。

[root@localhost huangcd]# awk '{name=$1;belts=$4; if(belts~/Yellow/) print name " is belt" belts}' grade.txt 
P.Bunny is beltYellow

通常在B E G I N部分赋值是很有益的,可以在a w k表达式进行改动时减少很多麻烦。

第二个例子中给数字赋以变量名B A S E L I N E和在B E G I N部分给变量赋值,两者意义相同。

[root@localhost huangcd]# awk 'BEGIN {BASELINE="27"} {if($6<BASELINE) print $0}' grade.txt 
J.Lulu      06/99     48317  green    9    24   26
J.Troll     07/99     4842   Brown-3  12   26   26

当在a w k中修改任何域时,重要的一点是要记住实际输入文件是不可修改的,修改的只是
保存在缓存里的a w k复本。a w k会在变量N R或N F变量中反映出修改痕迹。

为修改数值域,简单的给域标识重赋新值,如: $ 1 = $ 1 + 5,会将域1数值加5,但要确保赋
值域其子集为数值型。
修改M . Ta n s l e y的目前级别分域,使其数值从4 0减为3 9,使用赋值语句$ 6 = $ 6 - 1,当然在
实施修改前首先要匹配域名。

[root@localhost huangcd]# awk '{if($1=="M.Tansley") $6=$6-1; print $1,$6,$7}' grade.txt
M.Tansley 39 44
J.Lulu 24 26
P.Bunny 35 28
J.Troll 26 26
L.Tansley 30 28



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 chmod命令的其他例子 6 1.4.5 可以选择使用符号模式或绝对模式 7 1.5 目录 7 1.6 suid/guid 7 1.6.1 为什么要使用suid/guid 8 1.6.2 设置suid/guid的例子 8 1.7 chown和chgrp 9 1.7.1 chown举例 9 1.7.2 chgrp举例 9 1.7.3 找出你所属于的用户组 9 1.7.4 找出其他用户所属于的组 10 1.8 umask 10 1.8.1 如何计算umask值 10 1.8.2 常用的umask值 11 1.9 符号链接 12 1.9.1 使用软链接来保存文件的多个映像 12 1.9.2 符号链接举例 12 1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16 2.1.4 使用user和nouser选项 16 2.1.5 使用group和nogroup选项 16 2.1.6 按照更改时间查找文件 17 2.1.7 查找比某个文件新或旧的文件 17 2.1.8 使用type选项 17 2.1.9 使用size选项 18 2.1.10 使用depth选项 18 2.1.11 使用mount选项 18 2.1.12 使用cpio选项 18 2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 23 3.1.4 创建一个新的crontab文件 24 3.1.5 列出crontab文件 24 3.1.6 编辑crontab文件 24 3.1.7 删除crontab文件 25 3.1.8 恢复丢失的crontab文件 25 3.2 at命令 25 3.2.1 使用at命令提交命令或脚本 26 3.2.2 列出所提交的作业 27 3.2.3 清除一个作业 27 3.3 &命令 27 3.3.1 向后台提交命令 28 3.3.2 用ps命令查看进程 28 3.3.3 杀死后台进程 28 3.4 nohup命令 29 3.4.1 使用nohup命令提交作业 29 3.4.2 一次提交几个作业 29 3.5 小结 30 第4章 文件名置换 31 4.1 使用* 31 4.2 使用? 32 4.3 使用[...]和[!...] 32 4.4 小结 33 第5章 shell输入与输出 34 5.1 echo 34 5.2 read 35 5.3 cat 37 5.4 管道 38 5.5 tee 39 5.6 标准输入、输出和错误 40 5.6.1 标准输入 40 5.6.2 标准输出 40 5.6.3 标准错误 40 5.7 文件重定向 40 5.7.1 重定向标准输出 41 5.7.2 重定向标准输入 42 5.7.3 重定向标准错误 42 5.8 结合使用标准输出和标准错误 43 5.9 合并标准输出和标准错误 43 5.10 exec 44 5.11 使用文件描述符 44 5.12 小结 45 第6章 命令执行顺序 46 6.1 使用&& 46 6.2 使用|| 46 6.3 用()和{ }将命令结合在一起 47 6.4 小结 48 第二部分 文本过滤 第7章 正则表达式介绍 49 7.1 使用句点匹配单字符 50 7.2 在行首以^匹配字符串或字符序列 50 7.3 在行尾以$匹配字符串或字符 51 7.4 使用*匹配字符串中的单字符或其重复 序列 51 7.5 使用\屏蔽一个特殊字符的含义 52 7.6 使用[]匹配一个范围或集合 52 7.7 使用\{\}匹配模式结果出现的次数 53 7.8 小结 55 第8章 grep家族 56 8.1 grep 57 8.1.1 双引号引用 57 8.1.2 grep选项 57 8.1.3 查询多个文件 57 8.1.4 行匹配 57 8.1.5 行数 58 8.1.6 显示非匹配行 58 8.1.7 精确匹配 58 8.1.8 大小写敏感 58 8.2 grep和正则表达式 58 8.2.1 模式范围 59 8.2.2 不匹配行首 59 8.2.3 设置大小写 59 8.2.4 匹配任意字符 59 8.2.5 日期查询 59 8.2.6 范围组合 60 8.2.7 模式出现机率 60 8.2.8 使用grep匹配“与”或者“或”模式 61 8.2.9 空行 61 8.2.10 匹配特殊字符 61 8.2.11 查询格式化文件名 61 8.2.12 查询IP地址 61 8.3 类名 62 8.4 系统grep命令 62 8.4.1 目录 63 8.4.2 passwd文件 63 8.4.3 使用ps命令 63 8.4.4 对一个字符串使用grep 64 8.5 egrep 64 8.6 小结 65 第9章 AWK介绍 66 9.1 调用awk 66 9.2 awk脚本 67 9.2.1 模式和动作 67 9.2.2 域和记录 67 9.2.3 awk正则表达式及其操作 70 9.2.4 元字符 70 9.2.5 条件操作符 70 9.2.6 awk内置变量 73 9.2.7 NF、NR和FILENAME 74 9.2.8 awk操作符 75 9.2.9 内置的字符串函数 78 9.2.10 字符串屏蔽序列 80 9.2.11 awk输出函数printf 81 9.2.12 printf修饰符 81 9.2.13 awk数组 86 9.3 小结 88 第10章 sed 用法介绍 89 10.1 sed怎样读取数据 89 10.2 调用sed 89 10.2.1 保存sed输出 90 10.2.2 使用sed在文件中查询文本的方式 90 10.2.3 基本sed编辑命令 90 10.3 sed和正则表达式 91 10.4 基本sed编程举例 91 10.4.1 使用p(rint)显示行 91 10.4.2 打印范围 91 10.4.3 打印模式 92 10.4.4 使用模式和行号进行查询 92 10.4.5 匹配元字符 92 10.4.6 显示整个文件 92 10.4.7 任意字符 92 10.4.8 首行 92 10.4.9 最后一行 93 10.4.10 打印行号 93 10.4.11 附加文本 93 10.4.12 创建sed脚本文件 94 10.4.13 插入文本 94 10.4.14 修改文本 95 10.4.15 删除文本 96 10.4.16 替换文本 96 10.5 使用替换修改字符串 97 10.6 将sed结果写入文件命令 97 10.7 从文件中读文本 98 10.8 匹配后退出 98 10.9 显示文件中的控制字符 99 10.10 使用系统sed 99 10.10.1 处理控制字符 99 10.10.2 处理报文输出 101 10.10.3 去除行首数字 101 10.10.4 附加文本 102 10.10.5 从shell向sed传值 102 10.10.6 从sed输出中设置shell变量 102 10.11 快速一行命令 102 10.12 小结 103 第11章 合并与分割 104 11.1 sort用法 104 11.1.1 概述 104 11.1.2 sort选项 104 11.1.3 保存输出 105 11.1.4 sort启动方式 105 11.1.5 sort对域的参照方式 105 11.1.6 文件是否已分类 105 11.1.7 基本sort 106 11.1.8 sort分类求逆 106 11.1.9 按指定域分类 106 11.1.10 数值域分类 106 11.1.11 唯一性分类 107 11.1.12 使用k的其他sort方法 108 11.1.13 使用k做分类键排序 108 11.1.14 指定sort序列 108 11.1.15 pos用法 108 11.1.16 使用head和tail将输出分类 109 11.1.17 awk使用sort输出结果 109 11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 11.6.1 指定列 116 11.6.2 使用不同的域分隔符 116 11.6.3 paste命令管道输入 117 11.7 split用法 117 11.8 小结 118 第12章 tr用法 119 12.1 关于tr 119 12.1.1 字符范围 119 12.1.2 保存输出 120 12.1.3 去除重复出现的字符 120 12.1.4 删除空行 120 12.1.5 大写到小写 121 12.1.6 小写到大写 121 12.1.7 删除指定字符 121 12.1.8 转换控制字符 122 12.1.9 快速转换 122 12.1.10 匹配多于一个字符 123 12.2 小结 123 第三部分 登录环境 第13章 登录环境 125 13.1 /etc/profile 125 13.2 用户的$HOME.profile 128 13.3 stty用法 129 13.4 创建.logout文件 131 13.5 小结 131 第14章 环境和shell变量 132 14.1 什么是shell变量 132 14.2 本地变量 132 14.2.1 显示变量 133 14.2.2 清除变量 133 14.2.3 显示所有本地shell变量 133 14.2.4 结合变量值 134 14.2.5 测试变量是否已经设置 134 14.2.6 使用变量来保存系统命令参数 135 14.2.7 设置只读变量 135 14.3 环境变量 136 14.3.1 设置环境变量 136 14.3.2 显示环境变量 136 14.3.3 清除环境变量 137 14.3.4 嵌入shell变量 137 14.3.5 其他环境变量 139 14.3.6 set命令 140 14.3.7 将变量导出到子进程 140 14.4 位置变量参数 141 14.4.1 在脚本中使用位置参数 142 14.4.2 向系统命令传递参数 142 14.4.3 特定变量参数 143 14.4.4 最后的退出状态 144 14.5 小结 145 第15章 引号 146 15.1 引用必要性 146 15.2 双引号 146 15.3 单引号 147 15.4 反引号 147 15.5 反斜线 148 15.6 小结 149 第四部分 基础shell编程 第16章 shell脚本介绍 151 16.1 使用shell脚本的原因 151 16.2 脚本内容 151 16.3 运行一段脚本 152 16.4 小结 153
非常的全,绝对不会让你后悔。 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 chmod命令的其他例子 6 1.4.5 可以选择使用符号模式或绝对模式 7 1.5 目录 7 1.6 suid/guid 7 1.6.1 为什么要使用suid/guid 8 1.6.2 设置suid/guid的例子 8 1.7 chown和chgrp 9 1.7.1 chown举例 9 1.7.2 chgrp举例 9 1.7.3 找出你所属于的用户组 9 1.7.4 找出其他用户所属于的组 10 1.8 umask 10 1.8.1 如何计算umask值 10 1.8.2 常用的umask值 11 1.9 符号链接 12 1.9.1 使用软链接来保存文件的多个映像 12 1.9.2 符号链接举例 12 1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16 2.1.4 使用user和nouser选项 16 2.1.5 使用group和nogroup选项 16 2.1.6 按照更改时间查找文件 17 2.1.7 查找比某个文件新或旧的文件 17 2.1.8 使用type选项 17 2.1.9 使用size选项 18 2.1.10 使用depth选项 18 2.1.11 使用mount选项 18 2.1.12 使用cpio选项 18 2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 23 3.1.4 创建一个新的crontab文件 24 3.1.5 列出crontab文件 24 3.1.6 编辑crontab文件 24 3.1.7 删除crontab文件 25 3.1.8 恢复丢失的crontab文件 25 3.2 at命令 25 3.2.1 使用at命令提交命令或脚本 26 3.2.2 列出所提交的作业 27 3.2.3 清除一个作业 27 3.3 &命令 27 3.3.1 向后台提交命令 28 3.3.2 用ps命令查看进程 28 3.3.3 杀死后台进程 28 3.4 nohup命令 29 3.4.1 使用nohup命令提交作业 29 3.4.2 一次提交几个作业 29 3.5 小结 30 第4章 文件名置换 31 4.1 使用* 31 4.2 使用? 32 4.3 使用[...]和[!...] 32 4.4 小结 33 第5章 shell输入与输出 34 5.1 echo 34 5.2 read 35 5.3 cat 37 5.4 管道 38 5.5 tee 39 5.6 标准输入、输出和错误 40 5.6.1 标准输入 40 5.6.2 标准输出 40 5.6.3 标准错误 40 5.7 文件重定向 40 5.7.1 重定向标准输出 41 5.7.2 重定向标准输入 42 5.7.3 重定向标准错误 42 5.8 结合使用标准输出和标准错误 43 5.9 合并标准输出和标准错误 43 5.10 exec 44 5.11 使用文件描述符 44 5.12 小结 45 第6章 命令执行顺序 46 6.1 使用&& 46 6.2 使用|| 46 6.3 用()和{ }将命令结合在一起 47 6.4 小结 48 第二部分 文本过滤 第7章 正则表达式介绍 49 7.1 使用句点匹配单字符 50 7.2 在行首以^匹配字符串或字符序列 50 7.3 在行尾以$匹配字符串或字符 51 7.4 使用*匹配字符串中的单字符或其重复 序列 51 7.5 使用\屏蔽一个特殊字符的含义 52 7.6 使用[]匹配一个范围或集合 52
shell是一种完整的编程语言,易学易用;shell脚本可以使烦人的手工作业自动化,使你的工作变得简单、轻松!本书通过各种实用的系统管理小技巧和趣味脚本代码,详尽地介绍shell编程各个不同的方面。学完本书后,你将成为一名shell编程高手。 内容简介 本书共分五部分 ,详细介绍SHELL编程技巧,各种UNIX命令及语法,还涉及了UNIX的文字处理以及少量的系统管理问题。本书内容全面,文字简洁流畅,适合SHELL编程人员学习、参考。 目录 第一部分 SHELL 第一章 文件安全与权限 第二章 使用FIND和XARGS 第三章 后台执行命令 第四章 文件名置换 第五章 SHELL输入输出 第六章 命令执行顺序 第二部分 文本过滤 第七章 正则表达式介绍 第八章 GERP家族 第九章 AWK介绍 第十章 SED用法介绍 第十一章 合并与分割 第十二章 TR用法 第三部分 登录环境 第十三章 登录环境 第十四章 环境和SHELL变量 第十五章 小结 第四部分 基础SHELL编程 第十六章 SHELL脚本介绍 第十七章 条件测试 第十八章 控制流结构 第十九章 SHELL函数 第二十章 向脚本传递参数 第二一章 创建屏幕输出 第二二章 创建屏幕输入 第二三章 调试脚本 第二四章 SHELL嵌入命令 第五部分 高级SHELL编程技巧 第二五章 深入讨论 << 第二六章 SHELL工具 第二七章 几个脚本例子 第二八章 运行级别脚本 第二九章 CGI脚本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值