一、Linux 的自定义函数、系统函数库、资源脚本控制、信号、一次性计划任务、周期性计划任务、脚本加锁、元字符、find、sed 及 awk、sed 替换命令、sed 指令及其它指令、sed 多行模式空间、保持空间、awk 字段和表达式
- 自定义函数,如下所示:
- 函数用于"包含"重复使用的
- 命令结合
- 自定义函数,如下:
function fname(){
命令
}
- 函数的执行,
fname
- 自定义函数,如下所示:
- 函数作用范围的变量,
local变量名 - 函数的参数,
$1 $2 $3 ... $n
- 系统脚本,如下所示:
- 系统自建了函数库,可以在脚本中引用,如
/etc/init.d/functions - 自建函数库,使用
source函数脚本文件导入函数
- 脚本优先控制,如下所示:
- 可以使用
nice和renice调整脚本优先级 - 避免出现不可控的死循环,死循环导致
cpu占用过高,死循环导致死机
- 捕获信号,捕获信号脚本的编写,如下所示:
kill默认会发送 15 号信号给应用程序ctr+c发送 2 号信号给应用程序- 9 号信号不可阻塞
- 一次性计划任务,如下所示:
- 计划任务,让计算机在指定的时间运行程序
- 计划任务分为一次性计划任务和周期性计划任务
- 一次性计划任务
at
- 周期性计划任务,
cron,如下所示:
- 配置方式,
crontab -e - 查看现有的计划任务,
crontab -l - 配置格式,分钟 小时 日期 月份 星期 执行的命令,注意命令的路径问题
- 计划任务加锁,如果计算机不能按照预期时间运行,
anacontab延时计划任务和flock锁文件。 - 元字符,如下所示:
.匹配除换行符外的任意单个字符*匹配任意一个跟在它前面的字符[]匹配方括号中的字符串中的任意一个^匹配开头- $ 匹配结尾
\转义后面的特殊字符
- 扩展元字符,如下所示:
+匹配前面的正则表达式至少出现一次?匹配前面的正则表达式出现零次或一次|匹配它前面或后面的正则表达式
Vim和sed、AWK的区别,交互式与非交互式,文件操作模式与行操作模式。sed基本用法,sed一般用于对文本内容做替换,如sed '/user1/s/user1/u1/' /etc/passed。AWK基本用法,AWK一般用于对文本内容进行统计,按需要的格式进行输出,如下所示:
cut命令,cut -d: -f 1 /etc/passwdAWK命令,awk -F: '/wd$/{print $1}' /etc/passwd
sed的模式空间,sed的基本工作方式,如下所示:
- 将文件以行为单位读取到内存,模式空间
- 使用
sed的每个脚本对该行进行操作 - 处理完成后输出改行
sed的替换命令s,如下所示:
sed 's/old/new/' filenamesed -e 's/old/new' -e 's/old/new' filename ...sed -i 's/old/new' 's/old/new/' filename ...
- 使用正则表达式,带正则表达式的替换命令
s,如下所示:
sed 's/正则表达式/new/' filenamesed -r 's/扩展正则表达式/new/' filename
sed的替换命令加强版,分为全局替换、标志位、寻址、分组、sed脚本文件。- 全局替换,
s/old/new/g,其中g为全局替换,用于替换所有出现的次数。/如果和正则匹配的内容冲突可以使用其它符号,如s@old@new@g。 - 标志位,
s/old/new标志位,如下所示:
- 数字,第几次出现才进行替换
g,每次出现都进行替换p打印模式空间的内容,sed -n 'script' filename阻止默认输出w file将模式空间的内容写入到文件
- 寻址,默认对每行进行操作,增加寻址后对匹配的行进行操作,如下所示:
/正则表达式/s/old/new/g行号s/old/new/g,行号可以是具体的行,也可以是最后一行 $ 符号- 可以使用两个寻址符号,也可以混合使用行号和正则地址
- 分组,寻址可以匹配多条命令,
/regular/{s/old/new/; s/old/new/}。 - 脚本文件,可以将选项保存为文件,使用
-f加载脚本文件,sed -f sedscript filename。 sed的其它命令,删除命令、追加、插入、更改、打印、下一行、读文件和写文件、退出命令。- 删除命令,
[寻址]d,删除模式空间内容,改变脚本的控制流,读取新的输入行。 - 追加插入和更改,追加命令
a,插入命令i,更改命令c。 - 读文件和写文件,读文件命令
r,写文件命令w。 - 下一行,下一行命令
n,打印行号命令=,打印命令p,退出命令q。 - 为什么要有多行模式,如下所示:
- 配置文件一般为单行出现
- 也有使用
XML或JSON格式的配置文件,为多行出现
- 多行匹配命令,如下所示:
N将下一行加入到模式空间D删除模式空间中的第一个字符到第一个换行符P打印模式空间中的第一个字符到第一个换行符
- 保持空间,保持空间也是多行的一种操作方式,将内容暂存在保持空间,便于做多行处理。
- 保持空间命令,如下所示:
h和H将模式空间内容存放到保持空间g和G将保持空间内容取出到模式空间x交换模式空间和保持空间内容
AWK和sed的区别,如下所示:
AWK更像是脚本语言AWK用于"比较规范"的文本处理,用于统计数量并输出指定字段- 使用
sed将不规范的文本,处理为"比较规范"的文本
AWK脚本的流程控制,输入数据前例程BEGIN{}、主输入循环{}、所有文件读取完成例程END{}。AWK的记录和字段,如下所示:
- 每行称作
AWK的记录 - 使用空格、制表符分隔开的单词称作字段
- 可以自己指定分隔的字段
- 字段的引用,如下所示:
awk中使用$1 $2 ... $n表示每一个字段,如awk '{print $1,$2,$3}' filenameawk可以使用-F选项改变字段分隔符,如awk -F ',''{ print $1,$2,$3}' filename,分隔符可以使用正则表达式
AWK的表达式,赋值操作符、算数操作符、系统变量、关系操作符、布尔操作符。- 赋值操作符,如下所示:
=是最常用的赋值操作符,如var1 = 'name'、var2 = 'hello' 'world'、var3 = $1- 其它赋值操作符,
++、--、+=、-=、*=、/=、%=、^=
- 系统变量,如下所示:
FS和OFS字段分隔符,OFS表示输出的字段分隔符RS记录分隔符NR和FNR行数NF字段数量,最后一个字段内容可以用$NF取出
- 关系操作符,
<、>、<=、>=、==、!=、~、!~。布尔操作符,&&、||、!。
1102

被折叠的 条评论
为什么被折叠?



