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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

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

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

linux sed命令

簡介:

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

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

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

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

用法:

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

常用選項(xiàng):

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

-e: 多點(diǎn)編輯

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

-r: 支持使用擴(kuò)展正則表達(dá)式

-i: 原處編輯

script:

' ?地址命令 ?'

地址定界:

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

(2) 單地址:

#:?指定的行

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

(3) 地址范圍:

#,#

#,+#

/pat1/,/pat2/

#,/pat1/

(4) ~:步進(jìn)

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

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

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

編輯命令:

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

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

替換標(biāo)記:

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

g:?行內(nèi)全局替換

p:?顯示替換成功的行

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

其中&表示 /1/&/ 這里的&就是1的內(nèi)容

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

輸出結(jié)果:HELLOaaa

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

輸出結(jié)果:aaaHELLOaaa

以行為單位的新增/刪除

這種只是行內(nèi)操作

練習(xí)

1、將 /etc/passwd 的內(nèi)容列出并且列印行號,同時,請將第 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 文件內(nèi)的第 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、多點(diǎn)編輯:一條sed命令,刪除/etc/passwd第三行到末尾的數(shù)據(jù),并把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命令中本機(jī)的IPv4地址

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

10.1.253.75

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

以.分隔倒數(shù)第二個字段的重復(fù)次數(shù)

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

4?i686

919?noarch

2283?x86_64

其他高級編輯命令:

h: 把模式空間中的內(nèi)容覆蓋至保持空間中

H:把模式空間中的內(nèi)容追加至保持空間中

g: 從保持空間取出數(shù)據(jù)覆蓋至模式空間

G:從保持空間取出內(nèi)容追加至模式空間

x: 把模式空間中的內(nèi)容與保持空間中的內(nèi)容進(jìn)行互換

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

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

d: 刪除模式空間中的行

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

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

實(shí)例

sed -n 'n;p' FILE

打印偶數(shù)行

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

原創(chuàng)文章,作者:qzx,如若轉(zhuǎn)載,請注明出處:http://www.178linux.com/32322

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。