欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux sed命令的使用

 更新時(shí)間:2020年08月21日 09:35:08   作者:Dabelv  
這篇文章主要介紹了Linux sed命令的使用,幫助大家更好的理解和學(xué)習(xí)Linux的使用,感興趣的朋友可以了解下

1.功能簡(jiǎn)介

sed(Stream EDitor)是一種流文件編輯器,它一次處理一行內(nèi)容。處理時(shí),把當(dāng)前處理的行存儲(chǔ)在臨時(shí)緩沖區(qū)中,稱為“模式空間”(Pattern Space),接著用sed命令處理緩沖區(qū)中的內(nèi)容,處理完成后,把緩沖區(qū)的內(nèi)容送往屏幕,接著處理下一行,直到文件末尾。文件內(nèi)容并沒(méi)有改變,除非使用-i選項(xiàng)。sed主要用來(lái)編輯一個(gè)或多個(gè)文件,簡(jiǎn)化對(duì)文件的反復(fù)操作或者用來(lái)編寫轉(zhuǎn)換程序等。

sed功能同awk類似,差別在于,sed簡(jiǎn)單,對(duì)列處理的功能要差一些,awk功能復(fù)雜,對(duì)列處理的功能比較強(qiáng)大。

2.命令格式

sed [OPTION]... {script-only-if-no-other-script} [input-file]...

其中OPTION為命令選項(xiàng),script-only-if-no-other-script為處理動(dòng)作,可以由-e指定多個(gè),input-file為輸入文件,可以指定多個(gè)。

3.選項(xiàng)說(shuō)明

選項(xiàng):
-n,--quiet,--silent:使用安靜模式。sed的一般用法中,所有來(lái)自STDIN的數(shù)據(jù)一般都會(huì)被打印到終端上,如果加上-n后,則只有經(jīng)過(guò)sed特殊處理的那一行才會(huì)被列出來(lái)。
-e <script>,--expression=<script>:指定sed動(dòng)作,可以由多個(gè)-e指定多個(gè)動(dòng)作。
-f <script-file>,--file=<script-file>:直接將sed的動(dòng)作寫在一個(gè)文件內(nèi),-f filename則可以運(yùn)行filename 內(nèi)的sed動(dòng)作;
-r,--regexp-extended:sed支持?jǐn)U展正則表達(dá)式(默認(rèn)是基礎(chǔ)正則表達(dá)式)。
-i :直接修改讀取的文件內(nèi)容,而不是輸出到終端。
--help:顯示幫助。
--version:顯示版本。

動(dòng)作說(shuō)明:[n1[,n2]]function
n1, n2 :不見(jiàn)得會(huì)存在,一般代表“選擇進(jìn)行動(dòng)作的行數(shù)”,舉例來(lái)說(shuō),如果我的動(dòng)作是需要在 10 到 20 行之間進(jìn)行,則寫作“10,20動(dòng)作行為”。

function:
a :新增, a 的后面可以接字串,而這些字串會(huì)在新的一行出現(xiàn)(目前的下一行)~
c :取代, c 的后面可以接字串,這些字串可以取代 n1,n2 之間的行!
d :刪除,因?yàn)槭莿h除啊,所以 d 后面通常不接任何內(nèi)容;
i :插入, i 的后面可以接字串,而這些字串會(huì)在新的一行出現(xiàn)(目前的上一行);
p :列印,亦即將某個(gè)選擇的數(shù)據(jù)印出。通常 p 會(huì)與參數(shù) sed -n 一起運(yùn)行~
s :替換,通常這個(gè)s的動(dòng)作可以搭配正規(guī)表示法!例如 1,20s/old/new/g。

4.典型示例

4.1刪除行操作

(1)將 /etc/passwd 的內(nèi)容列出并且列印行號(hào),同時(shí),請(qǐng)將第 2~5 行刪除。

[b3335@MIC ~]$ nl -n ln /etc/passwd | sed '2,5d'
 root:x:0:0:root:/root:/bin/bash
 sync:x:5:0:sync:/sbin:/bin/sync
 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
.....(后面省略).....

注意:原本應(yīng)該是要下達(dá) sed -e 才對(duì),當(dāng)只有一個(gè)動(dòng)作的時(shí)候,沒(méi)有 -e 也行,但是多于一個(gè)動(dòng)作時(shí)必須要使用-e選項(xiàng)來(lái)指定動(dòng)作。同時(shí)也要注意的是, sed 后面接的動(dòng)作,請(qǐng)務(wù)必以兩個(gè)單引號(hào)括住。

(2)只要?jiǎng)h除第 2 行。

nl /etc/passwd | sed '2d'

(3)要?jiǎng)h除第 3 到最后一行

nl /etc/passwd | sed '3,$d' 

4.2新增行操作

(1)在第二行后加上”I like drinking tea”。

[b3335@MIC ~]$ nl -n ln /etc/passwd | sed '2a I like drinking tea'
 root:x:0:0:root:/root:/bin/bash
 bin:x:1:1:bin:/bin:/sbin/nologin
I like drinking tea
 daemon:x:2:2:daemon:/sbin:/sbin/nologin
.....(后面省略).....

(2)那如果是要在第二行前加入。

nl /etc/passwd | sed '2i drink tea'
//或
nl /etc/passwd | sed '1a drink tea'

(3)在第二行后面加入兩行,”I like drinking tea”與”I like drinking beer”。

[b3335@MIC ~]$ nl -n ln /etc/passwd | sed '2a I like drinking tea\nI like drinking beer'
  root:x:0:0:root:/root:/bin/bash
  bin:x:1:1:bin:/bin:/sbin/nologin
I like drinking tea
I like drinking beer
  daemon:x:2:2:daemon:/sbin:/sbin/nologin
…(后面省略)…

或者每一行使用反斜杠\來(lái)分開(kāi),就可以在命令行中將一條命令分開(kāi)多行輸入,如下:

[b3335@MIC ~]$ nl -n ln /etc/passwd | sed '2a I like drinking tea\
> I like drinking beer'

4.3替換行操作

(1)將第2-5行的內(nèi)容替換成為”No 2-5 number”。

[b3335@MIC ~]$ nl -nln /etc/passwd | sed '2,5c No 2-5 number'
  root:x:0:0:root:/root:/bin/bash
No 2-5 number
  sync:x:5:0:sync:/sbin:/bin/sync
.....(后面省略).....

4.4選擇行打印

(1)僅列出 /etc/passwd 文件內(nèi)的第 5-7 行。

[root@www ~]# nl -nln /etc/passwd | sed -n '5,7p'
 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
 sync:x:5:0:sync:/sbin:/bin/sync
 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

4.5數(shù)據(jù)的查找并進(jìn)行相關(guān)操作

(1)數(shù)據(jù)的查找并顯示

搜索 /etc/passwd有root關(guān)鍵字的行并輸出。

[b3335@MIC ~]$ nl /etc/passwd | sed -n '/root/p'
 root:x:0:0:root:/root:/bin/bash
 operator:x:11:0:operator:/root:/sbin/nologin

(2)數(shù)據(jù)的查找并刪除
刪除/etc/passwd所有包含root的行,其他行輸出。

[b3335@MIC ~]$ nl /etc/passwd | sed '/root/d'
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh
 bin:x:2:2:bin:/bin:/bin/sh
…(下面忽略)…

如果想刪除匹配的字符串,使用如下命令:

[b3335@MIC ~]$ nl /etc/passwd | sed 's/root//g'

(3)數(shù)據(jù)的查找并替換
除了整行的處理模式之外, sed 還可以用行為單位進(jìn)行部分?jǐn)?shù)據(jù)的搜尋并取代?;旧?sed 的搜尋與替代的與 vi 相當(dāng)?shù)念愃疲∷悬c(diǎn)像這樣:

sed 's/被取代的字串/新的字串/g'

(4)數(shù)據(jù)的搜尋并執(zhí)行命令
搜索/etc/passwd,找到root對(duì)應(yīng)的行,執(zhí)行后面花括號(hào)中的一組命令,每個(gè)命令之間用分號(hào)分隔,這里把bash替換為blueshell,再輸出這行:

nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p}'
 root:x:0:0:root:/root:/bin/blueshell

如果只替換/etc/passwd的第一個(gè)bash關(guān)鍵字為blueshell,就退出

nl /etc/passwd | sed -n '/bash/{s/bash/blueshell/;p;q}' 
root:x:0:0:root:/root:/bin/blueshell

4.6多點(diǎn)編輯
一條sed命令,刪除/etc/passwd第三行到末尾的數(shù)據(jù),并把bash替換為blueshell

nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/'
 root:x:0:0:root:/root:/bin/blueshell
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh

-e表示多點(diǎn)編輯,第一個(gè)編輯命令刪除/etc/passwd第三行到末尾的數(shù)據(jù),第二條命令搜索bash替換為blueshell。

4.7直接修改文件

sed 可以直接修改文件的內(nèi)容,不必使用管道命令或數(shù)據(jù)流重導(dǎo)向! 不過(guò),由於這個(gè)動(dòng)作會(huì)直接修改到原始的文件,所以請(qǐng)你千萬(wàn)不要隨便拿系統(tǒng)配置來(lái)測(cè)試,使用時(shí)也要慎重。我們使用下載的regular_express.txt 文件來(lái)測(cè)試看看吧!

利用 sed 將 regular_express.txt 內(nèi)每一行結(jié)尾若為 . 則換成 !

[root@www ~]# sed -i 's/\.$/!/g' regular_express.txt

利用 sed 直接在 regular_express.txt 最后一行加入”# This is a test”。

[root@www ~]# sed -i '$a # This is a test' regular_express.txt

由於 $ 代表的是最后一行,而 a 的動(dòng)作是新增,因此該文件最后新增”# This is a test”。

sed 的-i選項(xiàng)可以直接修改文件內(nèi)容,這功能非常有幫助!舉例來(lái)說(shuō),如果你有一個(gè) 100 萬(wàn)行的文件,你要在第 100 行加某些文字,此時(shí)使用 vim 可能會(huì)瘋掉!因?yàn)槲募罅?!那怎辦?就利用 sed 啊!透過(guò) sed 直接修改/取代的功能,你甚至不需要使用 vim 去修訂!

以上就是Linux sed命令的使用的詳細(xì)內(nèi)容,更多關(guān)于Linux sed命令的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Linux用if判斷目錄是否存在實(shí)例方法

    Linux用if判斷目錄是否存在實(shí)例方法

    在本篇文章中小編給各位整理的是關(guān)于Linux如何使用if判斷目錄是否存在的相關(guān)內(nèi)容,有需要的朋友們可以參考下。
    2020-03-03
  • linux對(duì)于UDP的學(xué)習(xí)

    linux對(duì)于UDP的學(xué)習(xí)

    本文將學(xué)習(xí)linux對(duì)于UDP的學(xué)習(xí),UDP(用戶數(shù)據(jù)報(bào)協(xié)議)沒(méi)有連接的,是面向數(shù)據(jù)報(bào)的,是不可靠,點(diǎn)進(jìn)來(lái)的小伙伴一起來(lái)學(xué)習(xí)吧
    2021-08-08
  • Linux快速生成大文件方式

    Linux快速生成大文件方式

    這篇文章主要介紹了Linux快速生成大文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Linux中MongoDB如何實(shí)現(xiàn)遠(yuǎn)程自動(dòng)備份詳解

    Linux中MongoDB如何實(shí)現(xiàn)遠(yuǎn)程自動(dòng)備份詳解

    這篇文章主要給大家介紹了關(guān)于Linux中MongoDB如何實(shí)現(xiàn)遠(yuǎn)程自動(dòng)備份的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • CentOS 7.2安裝Zabbix 3.2教程詳解

    CentOS 7.2安裝Zabbix 3.2教程詳解

    這篇文章主要介紹了CentOS 7.2安裝Zabbix 3.2教程詳解的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11
  • Ubuntu下安裝nvidia顯卡驅(qū)動(dòng)(安裝方式簡(jiǎn)單)

    Ubuntu下安裝nvidia顯卡驅(qū)動(dòng)(安裝方式簡(jiǎn)單)

    這篇文章主要介紹了Ubuntu下安裝nvidia顯卡驅(qū)動(dòng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Apache上傳文件500錯(cuò)誤的解決方法

    Apache上傳文件500錯(cuò)誤的解決方法

    Apache 2.3.6開(kāi)始,MaxRequestLen這個(gè)參數(shù)的默認(rèn)值從之前的1GB(汗一個(gè))調(diào)整到了131072字節(jié)(128KB)。于是上傳128KB以下的文件不會(huì)出問(wèn)題,但是超過(guò)這個(gè)值就會(huì)報(bào)500錯(cuò)誤了
    2014-04-04
  • Linux虛擬機(jī)復(fù)制文件到Windows主機(jī)的解決辦法

    Linux虛擬機(jī)復(fù)制文件到Windows主機(jī)的解決辦法

    這篇文章主要介紹了Linux虛擬機(jī)復(fù)制文件到Windows主機(jī)的解決辦法,文中通過(guò)代碼示例和圖文講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-07-07
  • Centos7的apache網(wǎng)站環(huán)境搭建wordpress

    Centos7的apache網(wǎng)站環(huán)境搭建wordpress

    本篇文章給大家詳細(xì)分析了在Centos7的apache網(wǎng)站環(huán)境搭建wordpress的詳細(xì)操作方法,有興趣的朋友參考下。
    2018-02-02
  • Linux上也有10個(gè)流行的Windows應(yīng)用程序

    Linux上也有10個(gè)流行的Windows應(yīng)用程序

    今天小編就為大家分享一篇關(guān)于在linux上也流行的windows程序,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-09-09

最新評(píng)論