Shell函数应用
函数定义格式
[function] 函数名(){命令序列[return x]}其中 [ function ] 是可选的,表示该函数的功能(可省略)[return x]的作用是当命令序列执行完后返还系统一个值
例:
函数写的计算器
Shell脚本调试
sh [-nvx] 脚本名-n:不会执行脚本,仅查询语法是否有问题-v:执行脚本时,先将脚本内容输出然后执行脚本,如果有错,也会给出提醒-x:将执行的脚本内容输出到屏幕上
Sed工具
-
Sed基本语法
命令语法:sed -e \'编辑指令\' 文件1 文件2...sed -n -e \'编辑指令\' 文件1 文件2...sed -i -e \'编辑指令\' 文件1 文件2...-e:指定要执行的命令,只有一个编辑命令时可省略-n:只输出处理后的行,读入时不显示-i:直接编辑文件,二不输出结果编辑指令格式[地址1] [地址2] 操作 [操作]p:输出指定行d:删除指定行s:字串替换,s/旧/新/gr:读取指定文件w:保存为文件i:插入,在当前行前面插入一行或多行
Sed用法示例
-
输出指定行:
将所有行输出
将第6行输出
将6-8行内容输出偶数奇数表达sed -n \'n;p\' /etc/passwd 偶数行输出sed -n \'p;n\' /etc/passwd 奇数行输出将最后一行内容输出sed -n \'$p\' /etc/passwd将包含root行输出sed -n \'/root/p\' /etc/passwd匹配不少于1次前导码为字符o,加‘-r’参数sed -nr \'/ro{1}t/\' /etc/passwd\'=\' 输出所在行的行号 \'/root/=\'
插入
在root行前输出HELLOsed \'/root/i Hello\' /etc/passwd在root行下一行输出HELLOsed \'/root/a HELLO\' /etc/passwd
删除
删除最后一行sed \'$d\' /etc/passwd删除空行 sed \'^$\' /etc/passwd删除root行sed \'/root/d\' /etc/passwd删除不包含root行sed \'/root/!\' /etc/passwd
替换
s/旧/新/gs/^/#/ 每行行首插入#号1,10y/root/ROOT/ 将第1-10行中的root替换为ROOT
迁移
将包含root的行迁移至末尾sed \'/root/{H;d};$G\' /etc/passwdH表示保存当前模式到一个缓冲区,G表示取出保存的模式sed \'/root/w file\' /etc/passwd将包含root的行另存为文件file1将包含root的行迁移至末尾sed \'/root/{H;d};$G /etc/passwd\'将第1-5行内容迁移至末尾sed \'1,5{H;d};$G\' /etc/passwd
如果想直接修改文件内容
加 -i 就行