綜合總結:詳解 Linux sed 多行處理
在正常情況下,sed將待處理的行讀入模式空間,腳本中的命令就一條接著一條的對該行進行處理,直到腳本執行完畢,然後該行被輸出,模式空間請空;然後重複剛才的動作,文件中的新的一行被讀入,直到文件處理完備。但是,各種各樣的原因,例如用戶希望在某個條件下腳本中的某個命令被執行,或者希望模式空間得到保留以便下一次的處理,都有可能使得sed在處理文件的時候不按照正常的流程來進行。這時候,sed設定了一些進階指令來滿足使用者的要求。如果想要學習sed的進階指令,首先要了解以下兩個快取區:
1、模式空間(pattern space)的定義:模式空間就是快取區,保存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的內容
例如咱們想要倒排一個檔案的內容,檔案如下:
[qiu.li@l-tdata1.tkt.cn6 ~]$ cat tmp 1-line 2-line 3-line
執行以下命令:
[qiu.li@l-tdata1.tkt.cn6 ~]$ sed '2,$G;h;$!d' tmp 3-line 2-line 1-line
下面咱們逐步理解上面的執行過程
一、讓咱們來分析如下三條指令:
- 2,$G:從第二行到最後一行執行G指令
- h:執行h指令
- $!d:刪除除了最後一行的所有行
二、具體的操作
- 掃描到第一行
- 將1-line放入模式空間;此時模式空間還是1-line;
- 直接執行h指令,此時暫存空間是1-line;
- 執行d指令,刪除了模式空間僅有的一行數據,刪除之後,模式空間是空的
- 掃描到第二行
- 將2-line放入模式空間
- 執行G指令,將暫存空間的1-line加入到模式空間2-line的後面,此時模式空間是2-line\n1-line;
- 執行h指令,此時暫存空間的內容是2-line\n1-line;
- 執行d指令,模式空間被清空
- 掃描到第三行
- 將3-line放入模式空間,
- 執行G指令,將暫存空間的2-line\n1-line加入到模式空間3-line的後面,此時模式空間是3-line\n2-line\n1-line;
- 執行h指令,此時暫存空間的內容是3-line\n2-line\n1-line;
- 不執行$!d;
- 直接輸出 3-line\n2-line\n1-line
當然,指令:sed '1!G;h;$!d' tmp 也能有這個效果。
以上是綜合總結:詳解 Linux sed 多行處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

互聯網運行不依賴單一操作系統,但Linux在其中扮演重要角色。 Linux廣泛應用於服務器和網絡設備,因其穩定性、安全性和可擴展性受歡迎。

Linux操作系統的核心是其命令行界面,通過命令行可以執行各種操作。 1.文件和目錄操作使用ls、cd、mkdir、rm等命令管理文件和目錄。 2.用戶和權限管理通過useradd、passwd、chmod等命令確保系統安全和資源分配。 3.進程管理使用ps、kill等命令監控和控制系統進程。 4.網絡操作包括ping、ifconfig、ssh等命令配置和管理網絡連接。 5.系統監控和維護通過top、df、du等命令了解系統運行狀態和資源使用情況。

Linux管理員的平均年薪在美國為75,000至95,000美元,歐洲為40,000至60,000歐元。提升薪資可以通過:1.持續學習新技術,如雲計算和容器技術;2.積累項目經驗並建立Portfolio;3.建立職業網絡,拓展人脈。

Linux系統管理員的主要任務包括系統監控與性能調優、用戶管理、軟件包管理、安全管理與備份、故障排查與解決、性能優化與最佳實踐。 1.使用top、htop等工具監控系統性能,並進行調優。 2.通過useradd等命令管理用戶賬戶和權限。 3.利用apt、yum管理軟件包,確保系統更新和安全。 4.配置防火牆、監控日誌、進行數據備份以確保系統安全。 5.通過日誌分析和工具使用進行故障排查和解決。 6.優化內核參數和應用配置,遵循最佳實踐提升系統性能和穩定性。

介紹 Linux是一個強大的操作系統,由於其靈活性和效率,開發人員,系統管理員和電源用戶都喜歡。但是,經常使用長而復雜的命令可能是乏味的

Linux的主要用途包括:1.服務器操作系統,2.嵌入式系統,3.桌面操作系統,4.開發和測試環境。 Linux在這些領域表現出色,提供了穩定性、安全性和高效的開發工具。

Linux適用於服務器、開發環境和嵌入式系統。 1.作為服務器操作系統,Linux穩定高效,常用於部署高並發應用。 2.作為開發環境,Linux提供高效的命令行工具和包管理系統,提升開發效率。 3.在嵌入式系統中,Linux輕量且可定制,適合資源有限的環境。

Linux和Windows在虛擬化支持上的主要區別在於:1)Linux提供KVM和Xen,性能和靈活性突出,適合高定制環境;2)Windows通過Hyper-V支持虛擬化,界面友好,與Microsoft生態系統緊密集成,適合依賴Microsoft軟件的企業。
