AI智能
改变未来

shell编程之Sed (函数与调试)

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 就行

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » shell编程之Sed (函数与调试)