日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux的sed命令是什么,linux sed命令

發布時間:2023/12/10 linux 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux的sed命令是什么,linux sed命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

linux sed命令

簡介:

sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern

space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有

改變,除非你使用重定向存儲輸出。Sed主要用來自動編輯一個或多個文件,簡化對文件的反復操作,編寫轉換程序等。

補充:提取某一行中的內容而用sed 匹配時,一定要先匹配到那一行后然后用后向引用把那一行中的所去的內容用反向引用 \1 或者 & **把它提取出來

用法:

sed [option]… ? ?' script ' ? ?inputfile…

常用選項:

-n:不輸出模式空間內容的自動打印

-e: 多點編輯

-f/PATH/TO/SCRIPT_FILE: 從指定文件中讀取編輯腳本

-r: 支持使用擴展正則表達式

-i: 原處編輯

script:

' ?地址命令 ?'

地址定界:

(1) 不給地址:對全文進行處理

(2) 單地址:

#:?指定的行

/pattern/:被此處模式所能夠匹配到的每一行

(3) 地址范圍:

#,#

#,+#

/pat1/,/pat2/

#,/pat1/

(4) ~:步進

1~2?奇數行(顯示奇數行)

2~2?偶數行(顯示偶數行)

記住:單引號' ' 里面的是地址命令,要加地址范圍 / /才能匹配

編輯命令:

d:???刪除模式空間匹配的行**p:???顯示模式空間中的內容**a?\text:?在行后面追加文本;支持使用\n實現多行追加**i?\text:?在行前面插入文本;支持使用\n實現多行插入**c?\text:?替換行為單行或多行文本**w?/path/to/somefile:????保存模式匹配的行至指定文件**r?/path/from/somefile:??讀取指定文件的文本至模式空間中匹配到的行后**=:???為模式空間中的行打印行號**!:???模式空間中匹配行取反處理**

s///:查找替換,支持使用其它分隔符,s@@@,s###

替換標記:

如果不加?就說明只??替換每行的第一個匹配到的內容

g:?行內全局替換

p:?顯示替換成功的行

w?/PATH/TO/SOMEFILE:將替換成功的行保存至文件中

其中&表示 /1/&/ 這里的&就是1的內容

在aaa后面添加字段:sed?-ne?'s/aaa/HELLO&/p'?test

輸出結果:HELLOaaa

在前后同時添加:sed?-ne?'s/aaa/&HELLO&/p'?test

輸出結果:aaaHELLOaaa

以行為單位的新增/刪除

這種只是行內操作

練習

1、將 /etc/passwd 的內容列出并且列印行號,同時,請將第 2~5 行刪除!

[root@www?~]#?nl?/etc/passwd?|?sed?'2,5d'

1?root:x:0:0:root:/root:/bin/bash

6?sync:x:5:0:sync:/sbin:/bin/sync

7?shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

2、僅列出 /etc/passwd 文件內的第 5-7 行

[root@www?~]#?nl?/etc/passwd?|?sed?-n?'5,7p'

5?lop:x:4:7:lop:/var/spool/lopd:/sbin/nologin

6?sync:x:5:0:sync:/sbin:/bin/sync

7?shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

3、多點編輯:一條sed命令,刪除/etc/passwd第三行到末尾的數據,并把bash替換為sheller

nl?/etc/passwd?|?sed?-e?'3,$d'?-e?'s/bash/sheller/'

1??root:x:0:0:root:/root:/bin/sheller

2??daemon:x:1:1:daemon:/usr/sbin:/bin/sh

4、從某行到某行的打印

sed?-n?'/^root/,/^s/p'?/etc/passwd

*后向引用的用法,匹配等用法:

1、刪除/etc/grub2.conf文件中所有以空白開頭的行行首的空白字符

[root@qzx?tmp]#?sed?'s@^[[:space:]]+@@'?/etc/grub.conf

#?grub.conf?generated?by?anaconda

#

#?Note?that?you?do?not?have?to?rerun?grub?after?making?changes?to?this?file

#?NOTICE:??You?have?a?/boot?partition.??This?means?that

2、刪除/etc/fstab文件中所有以#開頭,后面至少跟一個空白字符的行的行首的#和空白字符

[root@qzx?tmp]#?sed??'s@^#[[:space:]]\+@@'?/etc/fstab

3、在/root/install.log每一行行首增加#號

#Installing?ipw2200-firmware-3.1-4.el6.noarch

#Installing?rootfiles-8.1-6.1.el6.noarch

#Installing?man-pages-3.22-20.el6.noarch

#Installing?words-3.0-17.el6.noarch

#***?FINISHED?INSTALLING?PACKAGES?***[root@qzx?tmp]#?^C

[root@qzx?tmp]#?sed?'s$^$#$'?/root/install.log

4、在/etc/fstab文件中不以#開頭的行的行首增加#號

[root@qzx?tmp]#?sed??'s@^#[[:space:]]\+@@'?/etc/fstab

5、處理/etc/fstab路徑,使用sed命令取出其目錄名和基名

基名:

[root@qzx?tmp]#?echo?/etc/init/rc.conf/?|?sed?-r?'s@.*/([^/]+/?$)@\1@'

rc.conf/

[root@qzx?tmp]#?echo?/etc/init/rc.conf?|?sed?-r?'s@.*/([^/]+/?$)@\1@'

rc.conf

路徑名:

[root@qzx?tmp]#?echo?/etc/init/rc.conf?|?sed?-r?'s@(.*/)[^/]+/?$@\1@'

/etc/init/

6、利用sed 取出ifconfig命令中本機的IPv4地址

[root@qzx?tmp]#?ifconfig?|sed?-n?'2p'?|sed?-r?'s@.*addr:(.*)B.*@\1@'

10.1.253.75

7、統計centos安裝光盤中Package目錄下的所有rpm文件的

以.分隔倒數第二個字段的重復次數

[root@qzx?Packages]#?ls?*.rpm??|sed?-r?'s#.*\.(.*)\.rpm#\1#'|sort?|uniq?-c

4?i686

919?noarch

2283?x86_64

其他高級編輯命令:

h: 把模式空間中的內容覆蓋至保持空間中

H:把模式空間中的內容追加至保持空間中

g: 從保持空間取出數據覆蓋至模式空間

G:從保持空間取出內容追加至模式空間

x: 把模式空間中的內容與保持空間中的內容進行互換

n: 讀取匹配到的行的下一行覆蓋至模式空間

N:追加匹配到的行的下一行至模式空間

d: 刪除模式空間中的行

D:刪除當前模式空間開端至\n的內容(不在傳至標準輸出),放棄之后的命令,但是對剩余模式空間重新執行sed

保持空間,一次處理不完保存的地方

實例

sed -n 'n;p' FILE

打印偶數行

sed '1!G;h;$!d' FILE

倒序排列行 想到于 tac

sed '$!N;$!D' FILE

保留后兩行

sed '$!d' FILE

只保留最后一行

sed ‘G’ FILE

加空行

sed ‘g’ FILE

顯示10個空行

sed ‘/^$/d;G’ FILE

刪除多余的空行,并在每行后加一個空行

sed 'n;d' FILE

[root@qzx ~]# sed 'n;d' qzx.txt

1

3

5

7

9

sed -n '1!G;h;$p' FILE

[root@qzx ~]# sed -n '1!G;h;$p' qzx.txt

10

9

8

7

6

4

5

3

2

1

原創文章,作者:qzx,如若轉載,請注明出處:http://www.178linux.com/32322

總結

以上是生活随笔為你收集整理的linux的sed命令是什么,linux sed命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。