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/旧/新/g r:读取指定文件 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行前输出HELLO
sed '/root/i Hello' /etc/passwd
在root行下一行输出HELLO
sed '/root/a HELLO' /etc/passwd
删除
删除最后一行
sed '$d' /etc/passwd
删除空行 sed '^$' /etc/passwd
删除root行
sed '/root/d' /etc/passwd
删除不包含root行
sed '/root/!' /etc/passwd
替换
s/旧/新/g
s/^/#/ 每行行首插入#号
1,10y/root/ROOT/ 将第1-10行中的root替换为ROOT
迁移
将包含root的行迁移至末尾
sed '/root/{H;d};$G' /etc/passwd
H表示保存当前模式到一个缓冲区,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 就行