【拔刀吧少年】之sed编辑器
sed
- 一、sed編輯器
- 二、sed編輯器工作流程
- 1、讀取
- 2、執行
- 3、顯示
- 三、命令格式
- 四、常用選項
- 五、常用操作
- 六、使用地址
- 七、刪除行
- 八、替換
- 1、格式
- 2、4種替換標記
- 九、插入
一、sed編輯器
sed是一種流編輯器,流編輯器會在編輯器處理數據之前基于預先提供的一組規則來編輯數據流。
sed編輯器可以根據命令來處理數據流中的數據,這些命令要么從命令行中輸入,要么存儲在一個命令文本文件中。
sed是一個強大而簡單的文本解析轉換工具,可以讀取文本,并根據指定的條件對文本內容進行編輯(刪除、替換、添加、移動等),最后輸出所有行或者僅輸出處理的某些行。sed 也可以在無交互的情況下實現相當復雜的文本處理操作,被廣泛應用于 Shell 腳本中,用以完成各種自動化處理任務。
sed依賴于正則表達式
二、sed編輯器工作流程
1、讀取
sed從輸入流 (文件、管道、標準輸入) 中讀取一行內容并存儲到臨時的緩沖區中(又稱模式空間,pattern space)
2、執行
默認情況下,所有的sed命令都在模式空間中順序地執行,除非指定了行的地址,否則sed命令將會在所有的行上依次執行。
3、顯示
發送修改后的內容到輸出流。在發送數據后,模式空間將會被清空。在所有的文件內容都被處理完成之前,上述過程將重復執行,直至所有內容被處理完。
注:
在所有的文件內容都被處理完成之前,上述過程將重復執行,直至所有內容被處理完。
默認情況下所有的sed命令都是在模式空間內執行的,因此輸入的文件并不會發生任何變化,除非是用重定向存儲輸出。
三、命令格式
四、常用選項
sed [選項] ‘操作’ 參數
sed [選項] -f scriptfile 參數
選項 說明
-e或- -expression= 表示用指定命令來處理輸入的文本文件,只有一個操作命令時可省略,一 般在執行多個操作命令使用
f或- -file= 表示用指定的腳本文件來處理輸入的文本文件
h或- -help 顯示幫助
-n、- -quiet或silent 禁止sed編輯器輸出,但可以與p命令一起使用完成輸出
sed -e 'n{
操作1
操作2
…
}’ 文件1 文件2 …
-i 直接修改目標文本文件
打印行號和內容,行號在上,或者使用sed -n -e ‘=’ -e ‘p’ testsed1效果也一樣
打印行號和內容,行號在上,或者使用sed -n -e ‘=’ -e ‘p’ testsed1效果也一樣
五、常用操作
操作 說明
s 替換,替換指定字符
d 刪除,刪除選定的行
a 增加,在當前行下面增加一行指定內容
i 插入,在選定行,上面插入一行指定內容
c 替換,將選定行替換為指定內容
y 字符轉換,轉換前后的字符長度必須相同
p 打印,如果同時指定行,表示打印指定行;如果不指定行,則表示打印所有內容;如果有非打印字符,則以ASCII碼輸出。其通常與“-n”選項一起使用
= 打印行號
l (小寫L) 打印數據流中的文本和不可打印的ASCII字符(比如結束符$、制表符\t)
六、使用地址
sed編輯器有2種尋址方式:
以數字形式表示行區間
用文本模式來過濾出行
以數字形式表示行區間
打印文本的奇數和偶數行
打印/etc/passwd文件內指定的行
使用 -r 表示支持擴展正則表達式
七、刪除行
刪除以指定字符結尾的行及取反
刪除一個區間的行
匹配到開頭字符,無結尾的字符
八、替換
1、格式
2、4種替換標記
數字:表明新字符串將替換第幾處匹配的地方
g:表明新字符將會替換所有匹配的地方
p:打印與替換命令匹配的行,與-n一起使用
w 文件:將替換的結果寫到文件中
sed -i 's9\945\9\99\98\939g' test.txt #將94599替換為9893(紅色為分隔符)
-f執行腳本文件
w
九、插入
將輸出的字符進行互換位置
總結
以上是生活随笔為你收集整理的【拔刀吧少年】之sed编辑器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【拔刀吧少年】之正则表达式
- 下一篇: 【拔刀吧少年】之awk文本和数据处理编程