亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優(yōu)質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業(yè)務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發(fā)消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

Linux sed 多行處理詳細

添加時間:2017-5-25 18:59:20  添加: 思海網絡 

在正常情況下,sed將待處理的行讀入模式空間,腳本中的命令就一條接著一條的對該行進行處理,直到腳本執(zhí)行完畢,然后該行被輸出,模式空間請空;然后重復剛才的動作,文件中的新的一行被讀入,直到文件處理完備。但是,各種各樣的原因,比如用戶希望在某個條件下腳本中的某個命令被執(zhí)行,或者希望模式空間得到保留以便下一次的處理,都有可能使得sed在處理文件的時候不按照正常的流程來進行。這個時候,sed設置了一些高級命令來滿足用戶的要求。如果想要學習sed的高級命令,首先要了解如下兩個緩存區(qū):

1、模式空間(pattern space)的定義:模式空間就是一個緩存區(qū),保存sed剛剛從輸入端讀取的。
2、暫存空間(hold space)的定義:暫存空間就是在處理模式空間數據的時候,臨時緩存數據用的。

還有幾個命令參數:

g: 將hold space中的內容拷貝到pattern space中,原來pattern space里的內容清除
G: 將hold space中的內容append到pattern space\n后
h: 將pattern space中的內容拷貝到hold space中,原來的hold space里的內容被清除
H: 將pattern space中的內容append到hold space\n后
x: 交換pattern space和hold space的內容

比如咱們想要倒排一個文件的內容,文件如下:


1
2
3
4
[qiu.li@l-tdata1.tkt.cn6 ~]$ cat tmp 
  1-line
  2-line
  3-line

執(zhí)行如下命令:


1
2
3
4
[qiu.li@l-tdata1.tkt.cn6 ~]$ sed '2,$G;h;$!d' tmp
  3-line
  2-line
  1-line

下面咱們逐步理解上面的執(zhí)行過程

一、讓咱們來分析一下如下三條命令:

  • 2,$G:從第二行到最后一行執(zhí)行G命令
  • h:執(zhí)行h命令
  • $!d:刪除除了最后一行的所有行

二、具體的操作

  1. 掃描到第一行
    1. 將1-line放入模式空間;此時模式空間還是1-line;
    2. 直接執(zhí)行h命令,此時暫存空間是1-line;
    3. 執(zhí)行d命令,刪除了模式空間僅有的一行數據,刪除之后,模式空間是空的
  2. 掃描到第二行
    1. 將2-line放入模式空間
    2. 執(zhí)行G命令,將暫存空間的1-line添加到模式空間2-line的后面,此時模式空間是2-line\n1-line;
    3. 執(zhí)行h命令,此時暫存空間的內容是2-line\n1-line;
    4. 執(zhí)行d命令,模式空間被清空
  3. 掃描到第三行
    1. 將3-line放入模式空間,
    2. 執(zhí)行G命令,將暫存空間的2-line\n1-line添加到模式空間3-line的后面,此時模式空間是3-line\n2-line\n1-line;
    3. 執(zhí)行h命令,此時暫存空間的內容是3-line\n2-line\n1-line;
    4. 不執(zhí)行$!d;
  4. 直接輸出 3-line\n2-line\n1-line

 當然,命令:sed '1!G;h;$!d' tmp 也能有這個效果。

 

關鍵字:Linux、sed、緩存數據

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業(yè)務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站