shell函数、脚本调试、sed工具的用法

一.函数
将命令序列按格式写在一起,以便可以重复使用
函数语句结构
[funcation] 函数名 (){
命令序列
[return]
}
funcation、return 可省略

二.shell脚本调试
sh [-参数] **.sh
echo [-参数] **.sh
set [-参数] **.sh
参数
-n:不会执行,仅查询脚本语法是否有问题
-v:执行脚本时,将脚本内容输出到屏幕后执行,有错给出错误提示
-x:将执行脚本内容输出到屏幕上

三.sed工具
sed是文本处理工具,依赖于正则表达式,可读取文本内容,根据指定条件对数据进行添加、删除、替换等操作,被广泛用于shell脚本,以完成自动化处理任务。
1.sed基本语法
命令语法:sed -e 参数 ‘指令’ 文件
参数:-e指定要执行的命令,只有一个编辑命令时可省略
-n只输出处理后的行,读入时不显示
-i直接编辑文件,而不输出结果
常用指令:p 输出指定行
d 删除指定行
s 字符替换
r 读取指定文件
w 保存为文件
i 在当前行插入
n 延续到下一输入行
2.sed用法示例
(1)输出指定行:
sed -n ‘p’ /etc/passwd 输出所有内容
sed -n ‘6p’ /etc/passwd 输出第六行内容
sed -n ‘6,8p’ /etc/passwd 输出6到8行内容
sed -n ‘p;n’ /etc/passwd 输出奇数行
sed -n ‘n:p’ /etc/passwd 输出偶数行
sed -n ‘1,10{p;n}’ /etc/passwd 输出1~10行中奇数行
sed -n ‘1,10{n;p}’ /etc/passwd 输出1~10行中偶数行
sed -n ‘10, n ; p ′ / e t c / p a s s w d 输 出 10   末 尾 间 偶 数 行 s e d − n ′ {n;p}' /etc/passwd 输出10~末尾间偶数行 sed -n ' n;p/etc/passwd10 sednp’ /etc/passwd 输出最后一行
sed -n ‘1,+4p’ /etc/passwd 输出1~5行
sed -n ‘/root/p’ /etc/passwd 输出含“root”行
sed -n ‘10,/nom/p’ /etc/passwd 输出10行到有nom行
sed -nr ‘/ro{1,} t/p’ /etc/passwd 匹配不少于一次前导符o
sed -n ‘/root|ntp/p’ /etc/passwd 输出有root或ntp的行
sed -n ‘/nom/=’ /etc/passwd 输出含nom行及行号,=行号
sed -e ‘5q’ /etc/passwd 输出前5行后退出,q退出
(2)插入符合条件的行
sed ‘/root/i ok’ /etc/passwd 在含有root行的前插入行:ok
sed ‘/root/a ok’ /etc/passwd 在含有root行的后插入行:ok
sed ‘3aok’ /etc/passwd 在第三行后插入ok
(3)删除行
sed ‘1d’ /etc/passwd 删除第一行
sed ‘KaTeX parse error: Expected group after '^' at position 33: … 删除最后一行 sed '^̲’ /etc/passwd 删除空行
sed ‘2,4d’ /etc/passwd 删除2~4行
sed ‘/root/d’ /etc/passwd 删除包含root的行
sed ‘/root/!d’ /etc/passwd 删除不包含root的行
sed ‘/^root/d’ /etc/passwd 删除以root开头的行
sed ‘/nologin / d ′ / e t c / p a s s w d 删 除 以 n o l o g i n 结 尾 的 行 ( 4 ) 替 换 文 本 s e d ′ s / r o o t / / g ′ / e t c / p a s s w d 替 换 所 有 r o o t 为 空 s e d ′ s / r o o t / c o k ′ / e t c / p a s s w d 把 含 r o o t 行 替 换 为 o k s e d − n ′ s / r o o t / o k / 2 p ′ / e t c / p a s s w d 把 每 行 第 二 个 r o o t 替 换 为 o k s e d ′ / r o o t / s / r o o t / o k / g ′ / e t c / p a s s w d 把 所 有 r o o t 替 换 为 o k s e d ′ 1 , 3 s / b i n / B I N / g ′ / e t c / p a s s w d 将 1   3 行 所 有 b i n 替 换 为 B I N s e d ′ s / /d' /etc/passwd 删除以nologin结尾的行 (4)替换文本 sed 's/root//g' /etc/passwd 替换所有root为空 sed 's/root/c ok' /etc/passwd 把含root行替换为ok sed -n 's/root/ok/2p' /etc/passwd 把每行第二个root替换为ok sed '/root/s/root/ok/g' /etc/passwd 把所有root替换为ok sed '1,3s/bin/BIN/g' /etc/passwd 将1~3行所有bin替换为BIN sed 's/ /d/etc/passwdnologin4seds/root//g/etc/passwdrootseds/root/cok/etc/passwdrootoksedns/root/ok/2p/etc/passwdrootoksed/root/s/root/ok/g/etc/passwdrootoksed1,3s/bin/BIN/g/etc/passwd1 3binBINseds//ABC/’ /etc/passwd 每行行尾插入ABC
sed ‘s/^/#/’ /etc/passwd 每行行首插入#号
sed ‘/root/s/^/#/’ /etc/passwd 含root行的行首插入#号
sed ‘1cABC’ /etc/passwd 第一行替换为ABC
sed ‘y/root/ROOT/’ /etc/passwd 将root对应替换为ROOT
sed ‘1,10y/root/ROOT/’ /etc/passwd 将1~10行中root对应替换为ROOT
(5)迁移文本
sed ‘/root/w file1’ /etc/passwd 将包含root的行另存为文件file1
sed ‘/root/{H;d}; G ′ / e t c / p a s s w d 将 包 含 r o o t 的 行 迁 移 至 末 尾 s e d ′ 1 , 5 H ; d ; G' /etc/passwd 将包含root的行迁移至末尾 sed '1, 5{H;d}; G/etc/passwdrootsed1,5H;d;G’ /etc/passwd 将1~5行内容迁移至末尾
(6)直接修改文件内容
sed -i ‘指令’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值