AI智能
改变未来

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′/etc/passwd输出10末尾间偶数行sed−n′{n;p}\’ /etc/passwd 输出10~末尾间偶数行sed -n \’n;p′/etc/passwd输出10末尾间偶数行sed−n′p’ /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′/etc/passwd删除以nologin结尾的行(4)替换文本sed′s/root//g′/etc/passwd替换所有root为空sed′s/root/cok′/etc/passwd把含root行替换为oksed−n′s/root/ok/2p′/etc/passwd把每行第二个root替换为oksed′/root/s/root/ok/g′/etc/passwd把所有root替换为oksed′1,3s/bin/BIN/g′/etc/passwd将13行所有bin替换为BINsed′s//d\’ /etc/passwd 删除以nologin结尾的行(4)替换文本sed \’s/root//g\’ /etc/passwd 替换所有root为空sed \’s/root/c ok\’ /etc/passwd 把含root行替换为oksed -n \’s/root/ok/2p\’ /etc/passwd 把每行第二个root替换为oksed \’/root/s/root/ok/g\’ /etc/passwd 把所有root替换为oksed \’1,3s/bin/BIN/g\’ /etc/passwd 将1~3行所有bin替换为BINsed \’s//d′/etc/passwd删除以nologin结尾的行(4)替换文本sed′s/root//g′/etc/passwd替换所有root为空sed′s/root/cok′/etc/passwd把含root行替换为oksed−n′s/root/ok/2p′/etc/passwd把每行第二个root替换为oksed′/root/s/root/ok/g′/etc/passwd把所有root替换为oksed′1,3s/bin/BIN/g′/etc/passwd将13行所有bin替换为BINsed′s//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′/etc/passwd将包含root的行迁移至末尾sed′1,5H;d;G\’ /etc/passwd 将包含root的行迁移至末尾sed \’1, 5{H;d};G′/etc/passwd将包含root的行迁移至末尾sed′1,5H;d;G’ /etc/passwd 将1~5行内容迁移至末尾
(6)直接修改文件内容
sed -i ‘指令’

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » shell函数、脚本调试、sed工具的用法