sed & bash 学习手记(1)


1. 关于 -n 的说明

The default operation of sed is to output every input line. The -n option suppresses the automatic output. When specifying this option, each instruction intended to produce output must contain a print command, p. Look at the following example.


2. debian 下读取指定软件包的所有信息(实质上是读取相邻两个空行之间的所有数据)


    sed -n '/^Package: libc6-udeb/{:next;N;//n$/!b next;p}' Packages
   
    PS: 每 N 一行,缓冲区会加入 /n<newline> ,当读入一空行时,缓冲区的最后一个字符就是 /n

3. 读取所有软件包的名字


    sed -n 's/^Package: /(.*/)//1/p' Packages

    PS: /1 表示保留 pattern 中第一个子模式,即匹配括号中模式的予以保留

4. 提取含有特定信息的数据块(比如获取所有 gnome 用到的包)


    sed '/^Package:/{:next;N;//n$/!b next;/Section: gnome/b;d}' Packages

5. sed 中使用 bash 中定义的变量


    sed -n "/^Package: $file/{:next;N;//n$/! b next;p}" Packages

    PS: 注意 sed 的命令部分是用“”括起来的,这样可以引用 bash中定义的变量 file;另外!和 b之间        要留有空格否则bash 会报错,因为在bash中!有特殊用途。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值