文本三劍客之sed

簡要概括sed

一、流編輯器,逐行處理文本內容。處理方式由子命令指定,在內存中完成處理,默認不修改源文件。
語法格式:sed 【-選項】 ‘/過濾篩選/子命令/子命令選項’ 文本對象文件

二、sed用法:

sed[option].. ? ‘script’ inpututfile….

常用選項:

-n:不輸出模式空間內容到屏幕,即不自動打印
-e:多點編輯
-f: /PATH/SCRIPT_FILE:從指定文件讀取編輯腳本
-r:支持使用擴展正則表達式
-i:.bak:備份文件并原處編輯

scipt:“地址命令”

三、sed工具:
地址定界:
1、不給地址:對全文進行處理
2、單地址:
#:指定的行,$:最后一行
/pattern/:被此處模式所能匹配到的每一行
3、地址范圍:
#,#
#,+#
/pat1/,/pat2/
#,/pat1/
4、~:步進
1~2奇數行
2~2偶數行

四、

編輯命令:
d:刪除模式空間匹配的行,并立即啟用下一輪循環
p:打印當前模式空間內容,追加到默認輸出之后
a[\]test:在指定行后面追加文本
支持使用\n實現多行追加
i[\]test :在行前插入文本
c[\]test: 替換行為單行或多行文本
w /path/somefile:保存模式匹配的行至指定文件
r /path/somefile:讀取指定文件的文本至模式空間中 匹配到的行后
=:為模式空間中的行打印行號
!:模式空間中匹配行取反處理

s///:查找替換,支持使用其他分隔符,s@@2,s###
替換標記:
g:行內全局替換
p:顯示替換成功的行
w /PATH/TO/SOMEFILE:將替換成功的行保存至文件中

sed示例:
sed ‘2p’ /etc/passwd
sed -n ‘2p’ /etc/passwd
sed-n ‘1,4p’ /etc/passwd
sed -n ‘/root/p’ /etc/passwd
sed -n ‘2,/root/p’ /etc/passwd 從2行開始
sed -n ‘/^$/=’ fle 顯示空行行號
sed -n -e ‘/^$/p’ -e ‘/^$/=’ file
sed ‘root/a\superman’ /etc/passwd行后
sed ‘root/i\superman’ /etc/passwd行前
sed ‘root/c\superman’ /etc/passwd代替行

sed示例:
sed ‘/^$/d’ file
sed ‘1,10d’ file
nl /etc/passwd| sed ‘2,5d’
nl /etc/passwd| sed ‘2a tea’
sed ‘s/test/mytest/g’ example
sed -n ‘s/root/&superman/p’ /etc/passwd 單詞后
sed -n ‘s/root/superman&/p’ /etc/passwd單詞前
sed -e ‘s/dog/cat/’ -e ‘s/hi/lo/’ pets
sed -i.bak ‘s/dog/cat/g’ pets

五、

高級編輯命令:
p: 打印模式空間開端至\n內容,并追加到默認輸出之前
h: 把模式空間中的內容覆蓋至保持空間中
H:把模式空間中的內容追加至保持空間中
g: 從保持空間取出數據覆蓋至模式空間
G:從保持空間取出內容追加至模式空間
x:把模式空間中的內容與保持空間中的內容進行互換
n:讀取匹配到的行的下一行覆蓋至模式空間
N:讀取匹配到的行的下一行追加至模式空間
d:刪除模式空間中的行
D:如果模式空間包含換行符,則刪除知道第一個換行符的模式空間中的文本,
并不會讀取新的輸入行,而使用合成的模式空間重新啟動循環。如果模式空間
不包含換行符,則會想發出d命令那樣啟動正常的新循環

sed示例:
sed-n ‘n;p’ FILE
sed ‘1!G;h;$!d FILE
sed ‘N;D ‘ FILE
sed ‘$!d’ FILE
sed ‘$!N;$!D’ FILE
sed ‘G’ FILE
sed ‘g’ FILE
sed ‘/^$/d;G’ FILE
sed ‘n;d’ FILE
sed -n ‘1!G;h;$p’ FILE

命令
用法
N
讀取新的輸入行,并將該行追加到模式空間現有內容之后,來創建多行模式空間。創建后的多行模式空間中,原有內容和新內容用換行符”\n”來分割。
而執行N命令之后,將會繼續執行,N之后的命令,N之后命令的對象則是我們新的模式空間的內容。
注意:多行模式空間中,^匹配整個空間的開始,$匹配整個空間的結尾,
比如上面的 1\n2\n3 開頭是1,結尾是3
$!N,最后一行,不執行N命令
D
刪除模式空間中,從頭開始到第一個嵌入的換行符為止。
它并不會導致新行的輸入,而是會返回腳本的頂端,將這些指令應用于空間中剩余的內容
P
輸出模式空間中,從頭開始到第一個嵌入的換行符為止。
實際運用中,P經常放到N之后,P之前
n
輸出當前模式空間的內容,讀取下一行替換當前行,替換之后,n命令之后的命令作用到新行上
d
情況模式空間,并導致新行的讀入,此時控制將忽略d之后的命令,并轉移到腳本的頂端,作用在新的輸入行上
p
打印整個模式空間的內容。其他的對模式空間,沒啥影響了。

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/97219

(0)
會飛的蝸牛會飛的蝸牛
上一篇 2018-04-29 15:39
下一篇 2018-04-29 18:02

相關推薦

  • N31第六周作業

    本周(7.23–7.29)第六周 1、簡述osi七層模型和TCP/IP五層模型 OSI 七層模型 1、應用層:OSI 參考模型中最靠近用戶的一層,為計算機用戶提供應用接口,也為用戶直接提供各種網絡服務。我們常見應用層的網絡服務協議有:HTTP,HTTPS,FTP,POP3、SMTP等。 2、表示層:提供各種用于應用層數據的編碼和轉換功能,確保一個…

    Linux筆記 2018-08-01
  • liniux課程第一周總結

    第一天課程內容 MBR分區類型:主分區:1-4,一塊硬盤最多4個主分區,不可以分小區,可以用來啟動操作系統(系統分區),直接建文件系統,存放數據擴展分區:一塊硬盤最多一個擴展分區,可以沒有,加主分區最多4個,不能創建文件系統,可以再劃分更小的分區(即邏輯分區)邏輯驅動器(分區):可以創建文件系統,存放數據 系統分區:啟動操作系統的分區啟動分區:安裝操作系統的…

    Linux筆記 2018-04-01
  • rpm指令詳解

    程序包管理器: 功能:將編譯好的應用程序的各組成文件打包成一個或幾個程序包文件,從而更方便地實現程序包的安裝、升級、卸載和查詢等管理操作; ? 1、程序包的組成清單(每個程序包都單獨實現); ? ? ? ? 文件清單 ? ? ? ? ?安裝或卸載時運行的腳本 ? 2、數據庫(公共) ? ? ? ?程序包的名稱和版本; ? ? ? 依賴關系; ? ? ? 功能…

    Linux筆記 2018-03-30
  • Linux基本指令

    hostname??完整主機名cat?+文件路徑??可查看文件信息cat /etc/shells??顯示所有shelluname -r????查看內核版本ls?cpu???查看cpu信息free命令??查看內存?后面加-k是顯示的內存以kb為單位,-m(MB),-g(GB),-h顯示易讀單位lsblk??查看硬盤dmesg??查看計算機啟動的一些相關信息dm…

    2018-07-22
  • RHCE考試筆記

    上午RHCSA部分

    Linux筆記 2018-07-14
  • shell腳本編程基礎

    簡要概括一點腳本小知識

    Linux筆記 2018-04-14
欧美性久久久久