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/旧/新/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 就行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值