精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

sed用得少?sed常用語法簡介

jf_TEuU2tls ? 來源:浩道Linux ? 2023-12-18 09:14 ? 次閱讀

一、sed簡介

sed簡稱流編輯器,即stream editor的縮寫。sed是一個操作、過濾和轉換文本內容的強大工具。常用的功能有通過結合正則表達式對文件實現快速的增刪改查。最常用的查詢功能是過濾(過濾指定字符串)、取行(取出指定行)。

二、sed語法

(一)sed常用語法如下:

sed[選項參數]'[定位符]sed內置命令字符'文件

sed[選項參數]"[定位符]sed內置命令字符"文件

或通過執行命令以管道符輸送給sed命令處理

命令 | sed [選項參數] '[定位符]sed內置命令字符' 文件
1、sed常用選項參數有:
-n:表示取消默認的sed輸出,通常與sed內置命令p一起使用;
-i:表示直接將修改結果寫入文件,如果不加-i,sed修改的是內存數據;
-e:表示多次編輯,不需要管道符號;
-r:表示支持正則表達式;
2、sed內置的命令字符,主要是用于對文件進行增刪改查等操作,常見內置命令字符有:
a:表示對文本進行追加操作,在指定行后面添加一行或多行文本;
d:表示刪除匹配行;
c:替換行;
i:表示插入文本,在指定行前添加一行或多行文本;
p:表示打印匹配行內容,通常與-n一同使用;
s/正則/替換內容/g:表示匹配正則內容,然后替換內容(支持正則表達式),結尾g表示全局匹配;
=:打印行號;
r:表示讀取文件或者導入文件內容;
w:表示文件另存為或者導出文件內容;
3、sed匹配范圍主要有:
空地址:表示全文處理;
單地址:表示指定文件某一行;
/pattern/:表示被模式匹配到的每一行;
范圍區間:如12,22表示十二行到二十二行,如12,+5表示第12行向下5行;
步長:如1~2,表示1,3,5,7,9行;2~2,表示2,4,6,8,10行;

三、sed實例合集

以下例子針對sed語法進行舉例,并且都是實際工作中常用到的劍客招式。

(一)通過定位符打印文件中指定的行:

首先準備一份文件sed_test.txt進行例子演示,該文件內容如下所示:

we are from haodaolinux
xiaoming is a good boy !
xiaohong is a girl .
we all like study .
I like linux
we stuty python
you study network
they study linux
liming like java
jam like mysql
tom like redis
例子1、通過sed命令打印sed_test.txt文件第4行的內容,命令執行如下:
[root@haodaolinux1 home]# sed -n '4p' sed_test.txt  
we all like study .

例子2、通過sed命令打印sed_test.txt文件第1行到第4行的內容,命令執行如下:

[root@haodaolinux1 home]# sed -n '1,4p' sed_test.txt 
we are from haodaolinux
xiaoming is a good boy !
xiaohong is a girl .
we all like study .
例子3、通過sed命令打印sed_test.txt文件第2行以及后面的4行的內容,命令執行如下:
[root@haodaolinux1 home]# sed -n '2,+4p' sed_test.txt  
xiaoming is a good boy !
xiaohong is a girl .
we all like study .
I like linux
we stuty python
例子4、通過sed命令打印sed_test.txt文件第1行開始,步長為2的所有內容,命令執行如下:
[root@haodaolinux1 home]# sed -n '1~2p' sed_test.txt          
we are from haodaolinux
xiaohong is a girl .
I like linux
you study network
liming like java
tom like redis
例子5、通過sed命令打印sed_test.txt文件以we開頭的所有行,命令執行如下:
[root@haodaolinux1 home]# sed -rn '/^we/p' sed_test.txt 
we are from haodaolinux
we all like study .
we stuty python
例子6、通過sed命令打印sed_test.txt文件中有like的所有行,命令執行如下:
[root@haodaolinux1 home]# sed -rn '/like/p' sed_test.txt 
we all like study .
I like linux
liming like java
jam like mysql
tom like redis
例子7、通過sed命令打印sed_test.txt文件第1行,第3行,第5行的所有行,命令執行如下:
[root@haodaolinux1 home]# sed -n '1p;3p;5p' sed_test.txt 
we are from haodaolinux
xiaohong is a girl .
I like linux
例子8、通過sed命令打印sed_test.txt文件第3行以外的所有行,命令執行如下:
[root@haodaolinux1 home]# sed -n '3!p' sed_test.txt       
we are from haodaolinux
xiaoming is a good boy !
we all like study .
I like linux
we stuty python
you study network
they study linux
liming like java
jam like mysql
tom like redis

例子9、通過sed命令過濾內存信息,命令執行如下所示:

[root@haodaolinux1 home]# free -m | sed -n '/Mem/p'
Mem:            981         479         132           7         370         342
例子10、通過sed命令過濾磁盤根分區的信息,命令執行如下所示:
[root@haodaolinux1 home]# df -h | sed -n '//$/p'
/dev/sda2        38G   28G  9.9G  74% /

(二)刪除指定文件中相關內容:

如果要對源文件進行刪除操作,需要加上-i選項!!!

首先準備一份文件sed_test01.txt進行例子演示,該文件內容如下所示:

we are from haodaolinux and we are study linux .
#you do not like study ?
xiaoming is a good boy !
we all like study and we are the same and we are together !


I like linux
we stuty python , we like java , we like linux .
you study network
they study linux
liming like java
jam like mysql
tom like redis
#so we will get the python book.
例子1、通過sed命令刪除sed_test01.txt文件第3行的內容,命令執行如下:
[root@haodaolinux1 home]# sed '3d' sed_test01.txt
we are from haodaolinux and we are study linux .
#you do not like study ?
we all like study and we are the same and we are together !


I like linux
we stuty python , we like java , we like linux .
you study network
they study linux
liming like java
jam like mysql
tom like redis
#so we will get the python book.
例子2、通過sed命令刪除sed_test01.txt文件中以#開頭的行,命令執行如下:
[root@haodaolinux1 home]# sed '/^#/d' sed_test01.txt
we are from haodaolinux and we are study linux .
xiaoming is a good boy !
we all like study and we are the same and we are together !


I like linux
we stuty python , we like java , we like linux .
you study network
they study linux
liming like java
jam like mysql
tom like redis
例子3、通過sed命令刪除sed_test01.txt文件中不包含like的行,命令執行如下:
[root@haodaolinux1 home]# sed '/like/!d' sed_test01.txt 
#you do not like study ?
we all like study and we are the same and we are together !
I like linux
we stuty python , we like java , we like linux .
liming like java
jam like mysql
tom like redis
例子4、通過sed命令刪除sed_test01.txt文件中空白的行,命令執行如下:
[root@haodaolinux1 home]# sed '/^$/d' sed_test01.txt
we are from haodaolinux and we are study linux .
#you do not like study ?
xiaoming is a good boy !
we all like study and we are the same and we are together !
I like linux
we stuty python , we like java , we like linux .
you study network
they study linux
liming like java
jam like mysql
tom like redis
#so we will get the python book.
例子5、通過sed命令將sed_test01.txt文件中所有行替換為haodaolinux,命令執行如下:
[root@haodaolinux1 home]# sed 'c haodaolinux' sed_test01.txt
haodaolinux
haodaolinux
haodaolinux
haodaolinux
haodaolinux
haodaolinux
haodaolinux
haodaolinux
haodaolinux
haodaolinux
haodaolinux
haodaolinux
haodaolinux
例子6、通過sed命令將sed_test01.txt文件中第3行替換為haodaolinux,命令執行如下:
[root@haodaolinux1 home]# sed '3c haodaolinux' sed_test01.txt
we are from haodaolinux and we are study linux .
#you do not like study ?
haodaolinux
we all like study and we are the same and we are together !


I like linux
we stuty python , we like java , we like linux .
you study network
they study linux
liming like java
jam like mysql
tom like redis
#so we will get the python book.
例子7、通過sed命令將sed_test01.txt文件中boy所在的行替換為boy=student,命令執行如下:
[root@haodaolinux1 home]# sed '/boy/c boy=student' sed_test01.txt
we are from haodaolinux and we are study linux .
#you do not like study ?
boy=student
we all like study and we are the same and we are together !


I like linux
we stuty python , we like java , we like linux .
you study network
they study linux
liming like java
jam like mysql
tom like redis
#so we will get the python book.
例子8、通過sed命令將sed_test01.txt文件中每一行的第1個we替換為they,命令執行如下:
[root@haodaolinux1 home]# sed 's/we/they/' sed_test01.txt 
they are from haodaolinux and we are study linux .
#you do not like study ?
xiaoming is a good boy !
they all like study and we are the same and we are together !


I like linux
they stuty python , we like java , we like linux .
you study network
they study linux
liming like java
jam like mysql
tom like redis
#so they will get the python book.
例子9、通過sed命令將sed_test01.txt文件中每一行的所有we替換為they,命令執行如下:
[root@haodaolinux1 home]# sed 's/we/they/g' sed_test01.txt
they are from haodaolinux and they are study linux .
#you do not like study ?
xiaoming is a good boy !
they all like study and they are the same and they are together !


I like linux
they stuty python , they like java , they like linux .
you study network
they study linux
liming like java
jam like mysql
tom like redis
#so they will get the python book.
例子10、通過sed命令將sed_test01.txt文件中每一行的第3個we替換為they,命令執行如下:
[root@haodaolinux1 home]# sed 's/we/they/3' sed_test01.txt
we are from haodaolinux and we are study linux .
#you do not like study ?
xiaoming is a good boy !
we all like study and we are the same and they are together !


I like linux
we stuty python , we like java , they like linux .
you study network
they study linux
liming like java
jam like mysql
tom like redis
#so we will get the python book.
例子11、通過sed命令將sed_test01.txt文件中每一行的所有we替換為(we),命令執行如下:
[root@haodaolinux1 home]# sed 's/we/(&)/g' sed_test01.txt 
(we) are from haodaolinux and (we) are study linux .
#you do not like study ?
xiaoming is a good boy !
(we) all like study and (we) are the same and (we) are together !


I like linux
(we) stuty python , (we) like java , (we) like linux .
you study network
they study linux
liming like java
jam like mysql
tom like redis
#so (we) will get the python book.
例子12、通過sed命令將sed_test01.txt文件中第4行的所有we替換為they,命令執行如下:
[root@haodaolinux1 home]# sed '4s/we/they/g' sed_test01.txt 
we are from haodaolinux and we are study linux .
#you do not like study ?
xiaoming is a good boy !
they all like study and they are the same and they are together !


I like linux
we stuty python , we like java , we like linux .
you study network
they study linux
liming like java
jam like mysql
tom like redis
#so we will get the python book.
例子13、通過sed命令將sed_test01.txt文件中第4行的所有we進行刪除,命令執行如下:
[root@haodaolinux1 home]# sed '4s/we//g' sed_test01.txt 
we are from haodaolinux and we are study linux .
#you do not like study ?
xiaoming is a good boy !
 all like study and  are the same and  are together !


I like linux
we stuty python , we like java , we like linux .
you study network
they study linux
liming like java
jam like mysql
tom like redis
#so we will get the python book.
例子14、通過sed命令將sed_test01.txt文件中第4行的第1個we替換為they,并且只將該行打印輸出,命令執行如下:
[root@haodaolinux1 home]# sed -n '4s/we/they/p' sed_test01.txt 
they all like study and we are the same and we are together !
例子15、通過sed命令將sed_test01.txt文件中第4行的行號打印輸出,命令執行如下:
[root@haodaolinux1 home]# sed -n '4=' sed_test01.txt  
4
例子15、通過sed命令將sed_test01.txt文件中包含like的行的行號打印輸出,命令執行如下:
[root@haodaolinux1 home]# sed -n '/like/=' sed_test01.txt     
2
4
6
7
10
11
12
例子16、通過sed命令將sed_test01.txt文件中將以java結尾的行的行號打印輸出,命令執行如下:
[root@haodaolinux1 home]# sed -n '/java$/=' sed_test01.txt     
10
例子17、通過sed命令將sed_test01.txt文件中總的行號打印輸出,命令執行如下:
[root@haodaolinux1 home]# sed -n '$=' sed_test01.txt        
13

(三)通過sed對文件中的多行文本進行處理:

如果要對源文件進行編輯操作,需要加上-i選項!!

首先準備一份文件sed_test02.txt進行例子演示,該文件內容如下所示:

linux   python  network linux
python  linux   c       mysql
java    html    php     go
go      mysql   python  python
php     c++     python  php
例子1、通過sed命令在sed_test02.txt文件中的第2行前插入we are study,命令執行如下:
[root@haodaolinux1 home]# sed '2i we are study' sed_test02.txt 
linux   python  network linux
we are study
python  linux   c       mysql
java    html    php     go
go      mysql   python  python
php     c++     python  php
例子2、通過sed命令在sed_test02.txt文件中有mysql的行前插入youare study,命令執行如下:
[root@haodaolinux1 home]# sed '/mysql/i you are study' sed_test02.txt       
linux   python  network linux
you are study
python  linux   c       mysql
java    html    php     go
you are study
go      mysql   python  python
php     c++     python  php
例子3、通過sed命令在sed_test02.txt文件中的第2行h后追加we are study too,命令執行如下:
[root@haodaolinux1 home]# sed '2a we are study too' sed_test02.txt         
linux   python  network linux
python  linux   c       mysql
we are study too
java    html    php     go
go      mysql   python  python
php     c++     python  php
例子4、通過sed命令在sed_test02.txt文件中有mysql的行后追加youare study too,命令執行如下:
[root@haodaolinux1 home]# sed '/mysql/a you are study too' sed_test02.txt  
linux   python  network linux
python  linux   c       mysql
you are study too
java    html    php     go
go      mysql   python  python
you are study too
php     c++     python  php
例子5、兩個文件內容合并實例: 首先創建read.txt文件內容如下所示:
we are study
you are study
they are study
(1)通過sed命令讀取read.txt文件的內容,將讀取內容追加到sed_test02.txt文件中每一行的后面,命令執行如下:
[root@haodaolinux1 home]# sed 'r read.txt' sed_test02.txt  
linux   python  network linux
we are study
you are study
they are study
python  linux   c       mysql
we are study
you are study
they are study
java    html    php     go
we are study
you are study
they are study
go      mysql   python  python
we are study
you are study
they are study
php     c++     python  php
we are study
you are study
they are study
(2)通過sed命令讀取read.txt文件的內容,將讀取內容追加到sed_test02.txt文件中的第3行的后面,命令執行如下:
[root@haodaolinux1 home]# sed '3r read.txt' sed_test02.txt 
linux   python  network linux
python  linux   c       mysql
java    html    php     go
we are study
you are study
they are study
go      mysql   python  python
php     c++     python  php
(3)通過sed命令讀取read.txt文件的內容,將讀取內容追加到sed_test02.txt文件中有mysql行的后面,命令執行如下:
[root@haodaolinux1 home]# sed '/mysql/r read.txt' sed_test02.txt 
linux   python  network linux
python  linux   c       mysql
we are study
you are study
they are study
java    html    php     go
go      mysql   python  python
we are study
you are study
they are study
php     c++     python  php
例子6:文件內容另存為其它文件實例:

(1)通過sed命令讀取sed_test02.txt文件中所有內容,另存為write.txt文件,命令執行如下:

[root@haodaolinux1 home]# sed 'w write.txt' sed_test02.txt 
linux   python  network linux
python  linux   c       mysql
java    html    php     go
go      mysql   python  python
php     c++     python  php
(2)通過sed命令將sed_test02.txt文件中包含mysql的行,另存為write_mysql.txt文件,命令執行如下:
[root@haodaolinux1 home]# sed -i '/mysql/w write_mysql.txt' sed_test02.txt
(3)通過sed命令將sed_test02.txt文件中1行到3行的內容,另存為write_13.txt文件,命令執行如下:
[root@haodaolinux1 home]# sed -i '2,3w write_13.txt' sed_test02.txt







審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11232

    瀏覽量

    208961
  • 磁盤
    +關注

    關注

    1

    文章

    367

    瀏覽量

    25180
  • SED
    SED
    +關注

    關注

    0

    文章

    24

    瀏覽量

    27068

原文標題:sed用得少?那是你沒發現它這些實用技巧~

文章出處:【微信號:浩道linux,微信公眾號:浩道linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Linux中grep、sed和awk命令詳解

    今天給大家聊一聊Linux中文本操作的`三劍客:awk、grep、sed`,因其功能強大、使用頻繁,且是Linux下文本處理的得力利器,常被稱之為`文本三劍客`。`grep`常用于查找,`sed`
    發表于 04-26 17:20 ?3203次閱讀
    Linux中grep、<b class='flag-5'>sed</b>和awk命令詳解

    Linux中sed命令用法

    這篇文章為初學者提供了關于 Linux 中 sed 命令的全面指南,涵蓋了其歷史、用途以及一些實用的技巧和竅門。通過掌握 sed,您可以高效處理文本處理任務,這對于任何使用 Linux 的人來說都是一項寶貴的技能。
    發表于 07-21 10:38 ?341次閱讀
    Linux中<b class='flag-5'>sed</b>命令用法

    VHDL語言的常用語法

    VHDL語言的常用語法[學習要求] 掌握VHDL硬件描述語言的基本描述語句。并可以利用這些語句進行簡單電路的設計。[重點與難點]重點:常用的并行語句與順序語句的語法。難點:部件(Component
    發表于 03-19 16:45

    PCB常用語匯總

    PCB常用語匯總
    發表于 11-13 12:03

    快速理解linux流編輯器sed命令

    全文處理結束sed可做的編輯動作包括刪除、查找替換、添加、插入、從其他文件中讀入數據等常用場景(1)shell腳本中不便使用vi命令對文件進行編輯,sed命令則很方便(2)文件太大,用vi編輯器打開
    發表于 11-30 10:44

    linux學習大全之sed 命令詳解

    定的script文件來處理輸入的文本文件;-r∶sed 的動作支援的是延伸型正規表示法的語法;-i∶直接修改讀取的檔案內容,而不是由螢幕輸出;-h或--help:顯示幫助;-V或--version:顯示版本
    發表于 01-12 15:20

    labsql ADO 常用語句命令

    labsqlADO 常用語句命令
    發表于 08-14 16:21

    SED的顯示原理是什么?

    SED顯示技術SED的基本顯示原理同CRT相同,都是由電子撞擊熒光材料而發光,但電子撞擊的方式卻不一樣。
    發表于 09-27 09:01

    Linux中Sed常用操作有哪些

    Linux中Sed常用操作
    發表于 05-26 10:53

    arm sed1335程序

    term.hex term.mcp CWSettingsWindows.stg arm sed1335程序 TargetDataWindows.tdt
    發表于 04-11 09:48 ?24次下載

    SED1520中文資料,SED1520中文數據手冊

    內藏 SED1520 控制器,點陣圖形液晶顯示模塊,使用手冊 前 言-------------------------------------------------------2注意事項--------------------------------------------------------2第一章
    發表于 09-07 22:04 ?160次下載

    SED顯示技術,SED顯示技術原理是什么?

    SED顯示技術,SED顯示技術原理是什么?     談到平板顯示技術,多數人可能只知道液晶和等離子,有人可能還知道有機發光
    發表于 03-27 11:56 ?4076次閱讀

    SQL語句的常用語法公式和常見的面試題目

    數據庫的相關SQL查詢語句是軟件測試工程師面試的一大重點,也是很多小伙伴面試中覺得比較困難的知識點。下面小編總結出一些SQL語句的常用語法公式和常見的面試題目。
    的頭像 發表于 11-07 10:10 ?1281次閱讀

    sed工具豐富的功能介紹

    sed命令的格式為:sed -n 'n'p filename,單引號內的n是一個數字,表示第幾行。-n選項的作用是只顯示我們要打印的行,無關緊要的內容不顯示。
    的頭像 發表于 12-02 09:38 ?731次閱讀

    MySQL常用語

    MySQL是一個關系型數據庫管理系統,廣泛應用于Web應用程序的開發以及數據管理領域。在使用MySQL時,有一些常用的語句可以幫助我們進行數據的操作和管理。接下來,我將詳細介紹MySQL的常用語
    的頭像 發表于 11-21 11:11 ?495次閱讀