sed高级编程(一)

sed高级编程(一)

  • sed编辑器包括3个特殊命令,用来处理多行文本:

    1. N:在数据流刘中添加下一行以创建用于处理的多行组。
    2. D:删除多行组中的单隔行。
    3. P:打印多行组中的单隔行。
  • next命令,小写n命令使sed移动到数据流中文本的下一行。
  • 单行next命令移动数据流文本的下一行进入sed编辑器的处理空间(模式空间)。next命令的多行版本(N)将下一行添加到已经存在与模式空间的文本中。
        $cat data
        The first meeting of the Linux System
        Administrator's group will be held on Tuesday.
        All System Adminstrators should attend this meeting .
        Thank you for your attendance
        $sed '
        > N
        > s/System Administrator/Desktop Users/
        > ' data
        The first meeting of the Linux System Administrator's group will be held on Tuesday.
        All System Administrator should attend this meeting.
        Thank you for your attendance.
        #通过使用N命令将下一行合并到找到第一个单词的行,可以探测到跨行的短语。(问题:到达数据流最后一行,N命令不能找到匹配的数据。)
  • 多行删除命令(D),它只删除模式空间中的第一行。它将删除直至换行符的所有字符:

        $cat data
        The first meeting of the Linux System
        Administrator's group will be held on Tuesday.
        All System Adminstrators should attend this meeting 
        $sed '
        > N
        > /System\nAdministrator/D
        > ' data
        Administrator's group will be held on Tuesday.
        All System Administrators  should attend this meeting.
  • 多行打印命令(P),只打印多行模式空间中的第一行。包括直至模式空间中换行字符的所有字符。

    $cat data
    The first meeting of the Linux System
    Administrator's group will be held on Tuesday.
    All System Adminstrators should attend this meeting 
    $sed '
    > N
    > /System\nAdministrator/P
    > ' data
    The first meeting of the Linux System
    
  • 模式空间是sed一个活动的缓冲区,另一个称为保留空间的缓冲区:

    sed编辑器保留空间命令

    命令描述命令描述
    h将模式空间复制到保留空间H将模式空间追加到保留空间
    g将保留空间复制到模式空间G将保留空间追加到模式空间
    $cat data2
This is the header line.
This is the first data line.
This is the second data line.
This is the last line.
    $sed -n '/first/{
> h
> p
> n
> p
> g
> p
> } ' data2
This is the first data line.
This is the second data line.
This is the first data line.
#(1)当包含单词first的行出现时,h命令将行放到保留空间中。2)p命令打印模式空间的内容,即仍然是第一行数据。
(3)n命令检索数据流中的下一行,将其放到模式空间。
(4)p命令打印模式空间的内容,第二行数据。
(5)g命令将保留空间的内容(第一行数据)放回到模式空间,替换当前文本。
(6)p命令打印模式空间的内容,它现在回到第一行数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值