首頁 運維 linux運維 總結linux中sed指令的使用方法

總結linux中sed指令的使用方法

Nov 15, 2021 pm 03:55 PM
linux sed

總結linux中sed指令的使用方法

linux之sed指令:

1 初識sed

sed編輯器被稱為流編輯器,它和vim這種的互動式文字編輯器不同,是根據命令來處理資料流中的資料。會執行下列動作:

  • 一次從輸入中讀取一行資料(重複該動作直到全部行被讀取)

  • 根據編輯器指令匹配資料

  • 依照指令修改資料流中的資料

  • 將新資料輸出到STDOUT(標準輸出)

其中sed指令的可以從命令列輸入,也可以從一個指令檔讀取。

sed -e script 添加script中指定的命令
sed -f file 添加file中指定的命令
登入後複製

1.1 在命令列定義sed指令【推薦學習:linux影片教學

來看一個簡單的文字替換範例:

echo "hi,my name is xxx" | sed 's/xxx/kinsomy/'
#修改文件
sed 's/xxx/kinsomy/' data.txt
#执行多个命令 用-e选项,分号隔开
sed 's/xxx/kinsomy/; s/***/hhh/' data.txt
登入後複製

#將echo輸出的資料透過管道輸入sed中,然後用s指令替換,用第二個斜杠後的資料替換掉第一個斜杠後匹配的資料。

注意:sed操作文字檔案中的數據,只是將修改的資料輸出到STDOUT,但是並不會修改檔案本身的資料

1.2 從檔案讀取指令

在一個檔案script.sed中 定義一系列的指令,方便重複使用。

s/*/a
s/x/b
s/-/+
登入後複製

# -f选项指定命令文件
sed -f script.sed data.txt
登入後複製

2 sed基礎

2.1替換標記

上面的範例echo "hi,my name is xxx" | sed 's/ xxx/kinsomy/'只會取代每一行中匹配到的第一個數據,但是一行數據中若有多個匹配項,則不能全部被替換掉。

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/'
#输出
hi,my name is kinsomy, i am xxx
登入後複製

這時候可以使用一些替換標記substitution flag來設定替換的模式。替換標記跟在替換字串之後。

s/pattern/replacement/flags
登入後複製

數字,表示將替換掉第幾處被匹配到的資料

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/2'
#输出 第二个xxx被替换成kinsomy
hi,my name is xxx, i am kinsomy
登入後複製

g,表示取代所有 與的資料

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/g'
#输出 第二个xxx被替换成kinsomy
hi,my name is kinsomy, i am kinsomy
登入後複製

p,表示會印出被匹配出來的行

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/p'
#输出
hi,my name is kinsomy, i am xxx
hi,my name is kinsomy, i am xxx
登入後複製
w,将替换后输出保存到指定文件
echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/w output.txt'
登入後複製

2.3 行尋址

上文說到sed命令是一行行讀取文本,進行匹配操作數據,知道 所有行被遍歷完,如果這時候我們想要對特定的行 做操作就要使用行尋址。行尋址有兩種形式:

數字形式表示行

# 操作单行
$ sed '2s/xxx/***/' data.txt
# 操作一定行区间[2,4]
$ sed '2,4s/xxx/***/' data.txt
# 操作某行开始到最后[2,endline]
$ sed '2,$s/xxx/***/' data.txt
登入後複製

文字模式過濾器

首先在/etc/passwd內找到kinsomy的記錄,然後將bash替換為csh。文字模式過濾器配合正規表示式會很強大。

sed '/kinsomy/s/bash/csh/' /etc/passwd
登入後複製

2.4 刪除行

使用刪除指令d對文字進行刪除操作。

# 删除所有文本
sed 'd' data.txt
# 删除单行
sed '2d' data.txt
# 删除行区间[2,3]
sed '2,3d' data.txt
# 删除行区间[2,endline]
sed '2,$d' data.txt
# 删除匹配文本aa的行
sed '/aa/d' data.txt
# 删除两个匹配文本之间的文本 匹配到1和3的行之间的文本全部被删除
sed '/1/,/3/d' data.txt
登入後複製

2.5 插入、附加文字

插入命令i在指定行前增加新行

附加命令a在指定行後增加新行

# 追加
echo "Line 2" | sed 'a\
pipe quote> Line 1'
#插入
echo "Line 2" | sed 'i\
pipe quote> Line 1'
登入後複製

2.6 修改行

c指令用來修改一行資料

# 修改第三行文本
sed '3c\
pipe quote> change line ' data.txt
登入後複製

2.7 轉換指令

指令格式sed 'y/inchar/outchar'

#將inchar中的字元一一對應地 轉換成outchar的字元

echo "This 1 is a test of 1 try." | sed 'y/123/456/'
# 输出
This 4 is a test of 4 try.
登入後複製

以上是總結linux中sed指令的使用方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

無法以 root 身份登錄 mysql 無法以 root 身份登錄 mysql Apr 08, 2025 pm 04:54 PM

無法以 root 身份登錄 MySQL 的原因主要在於權限問題、配置文件錯誤、密碼不符、socket 文件問題或防火牆攔截。解決方法包括:檢查配置文件中 bind-address 參數是否正確配置。查看 root 用戶權限是否被修改或刪除,並進行重置。驗證密碼是否準確無誤,包括大小寫和特殊字符。檢查 socket 文件權限設置和路徑。檢查防火牆是否阻止了 MySQL 服務器的連接。

MySQL安裝在特定係統版本上報錯的解決途徑 MySQL安裝在特定係統版本上報錯的解決途徑 Apr 08, 2025 am 11:54 AM

MySQL安裝報錯的解決方法是:1.仔細檢查系統環境,確保滿足MySQL的依賴庫要求,不同操作系統和版本需求不同;2.認真閱讀報錯信息,根據提示(例如缺少庫文件或權限不足)採取對應措施,例如安裝依賴或使用sudo命令;3.必要時,可嘗試源碼安裝並仔細檢查編譯日誌,但這需要一定的Linux知識和經驗。最終解決問題的關鍵在於仔細檢查系統環境和報錯信息,並參考官方文檔。

mysql 無法啟動怎麼解決 mysql 無法啟動怎麼解決 Apr 08, 2025 pm 02:21 PM

MySQL啟動失敗的原因有多種,可以通過檢查錯誤日誌進行診斷。常見原因包括端口衝突(檢查端口占用情況並修改配置)、權限問題(檢查服務運行用戶權限)、配置文件錯誤(檢查參數設置)、數據目錄損壞(恢復數據或重建表空間)、InnoDB表空間問題(檢查ibdata1文件)、插件加載失敗(檢查錯誤日誌)。解決問題時應根據錯誤日誌進行分析,找到問題的根源,並養成定期備份數據的習慣,以預防和解決問題。

mysql 可以在 android 上運行嗎 mysql 可以在 android 上運行嗎 Apr 08, 2025 pm 05:03 PM

MySQL無法直接在Android上運行,但可以通過以下方法間接實現:使用輕量級數據庫SQLite,由Android系統自帶,無需單獨服務器,資源佔用小,非常適合移動設備應用。遠程連接MySQL服務器,通過網絡連接到遠程服務器上的MySQL數據庫進行數據讀寫,但存在網絡依賴性強、安全性問題和服務器成本等缺點。

無法從終端訪問 mysql 無法從終端訪問 mysql Apr 08, 2025 pm 04:57 PM

無法從終端訪問 MySQL 可能是由於:MySQL 服務未運行;連接命令錯誤;權限不足;防火牆阻止連接;MySQL 配置文件錯誤。

Linux最有用的是什麼? Linux最有用的是什麼? Apr 09, 2025 am 12:02 AM

Linux在服務器、嵌入式系統和桌面環境中的應用廣泛。 1)在服務器領域,Linux因其穩定性和安全性成為託管網站、數據庫和應用的理想選擇。 2)在嵌入式系統中,Linux因其高度定制性和高效性而受歡迎。 3)在桌面環境中,Linux提供了多種桌面環境,滿足不同用戶需求。

使用 Prometheus MySQL Exporter 監控 MySQL 和 MariaDB Droplet 使用 Prometheus MySQL Exporter 監控 MySQL 和 MariaDB Droplet Apr 08, 2025 pm 02:42 PM

有效監控 MySQL 和 MariaDB 數據庫對於保持最佳性能、識別潛在瓶頸以及確保整體系統可靠性至關重要。 Prometheus MySQL Exporter 是一款強大的工具,可提供對數據庫指標的詳細洞察,這對於主動管理和故障排除至關重要。

MySQL安裝時提示缺少依賴項如何解決 MySQL安裝時提示缺少依賴項如何解決 Apr 08, 2025 pm 12:00 PM

MySQL安裝失敗通常因缺少依賴項導致。解決方法:1.使用系統包管理器(如Linux的apt、yum或dnf,Windows的VisualC Redistributable)安裝缺失的依賴庫,例如sudoaptinstalllibmysqlclient-dev;2.仔細檢查錯誤信息,逐一解決複雜的依賴關係;3.確保包管理器源配置正確,能訪問網絡;4.對於Windows,下載安裝必要的運行庫。養成閱讀官方文檔和善用搜索引擎的習慣,能有效解決問題。

See all articles