最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Shell中sed編輯器的具體使用

 更新時(shí)間:2024年01月30日 09:39:17   作者:YUEAwb  
sed是一種流編輯器,sed編輯器可以根據(jù)命令來(lái)處理數(shù)據(jù)流中的數(shù)據(jù),本文就來(lái)介紹一下Shell中sed編輯器的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下

1.簡(jiǎn)介

sed是一種流編輯器,流編輯器會(huì)在編輯器處理數(shù)據(jù)之前基于預(yù)先提供的一組規(guī)則來(lái)編輯數(shù)據(jù)流。

sed編輯器可以根據(jù)命令來(lái)處理數(shù)據(jù)流中的數(shù)據(jù),這些命令要么從命令行中輸入,要么存儲(chǔ)在一個(gè)命令文本文件中。

2.sed編輯器的工作流程

sed 的工作流程主要包括讀取、執(zhí)行和顯示三個(gè)過(guò)程:

  • 讀取: sed從輸入流(文件、管道、標(biāo)準(zhǔn)輸入)中讀取一行內(nèi)容并存儲(chǔ)到臨時(shí)的緩沖區(qū)中(又稱(chēng)模式空間,pattern space )。
  • 執(zhí)行:默認(rèn)情況下,所有的sed 命令都在模式空間中順序地執(zhí)行, 除非指定了行的地址,否則sed命令將會(huì)在所有的行上依次執(zhí)行。
  • 顯示:發(fā)送修改后的內(nèi)容到輸出流(屏幕)。在發(fā)送數(shù)據(jù)后,模式空間將會(huì)被清空。在所有的文件內(nèi)容都被處理完成之前,上.述過(guò)程將重復(fù)執(zhí)行,直至所有內(nèi)容被處理完。

在所有的文件內(nèi)容都被處理完成之前,上述過(guò)程將重復(fù)執(zhí)行,直至所有內(nèi)容被處理完。

注意:默認(rèn)情況下所有的sed命令都是在模式空間內(nèi)執(zhí)行的,因此輸入的文件并不會(huì)發(fā)生任何變化,除非是用重定向存儲(chǔ)輸出或者sed -i.

3.sed命令格式

sed -e  '操作' 文件1 文件2..
 
sed -n -e '操作1;操作2' 文件1 文件2 ..
 
sed -f  腳本文件  文件1  文件2 ...
 
sed -i -e  '操作' 文件1 文件2 ...
sed  -e  'n {
  操作1
  操作2
}'  文件1  文件2 ...

常用選項(xiàng):

選項(xiàng)作用
-e或--expression=表示用指定命令來(lái)處理輸入的文本文件,只有一個(gè)操作命令時(shí)可省略,一般在執(zhí)行多個(gè)操作命令使用
-f或--file=表示用指定的腳本文件來(lái)處理輸入的文本文件
-h或--help顯示幫助
-n、--quiet或silent禁止sed編輯器輸出,但可以與p命令一起使用完成輸出
-i直接修改目標(biāo)文本文件 (建議先驗(yàn)證命令或備份目標(biāo)文件)
-rsed 的動(dòng)作支持的是延伸型正規(guī)表示法的語(yǔ)法。(默認(rèn)是基礎(chǔ)正規(guī)表示法語(yǔ)法)

常用選項(xiàng):
-n 不輸出模式空間內(nèi)容到屏幕,即不自動(dòng)打印
-e 多點(diǎn)編輯[root@www data]#sed -n -e '/^r/p'  -e'/^b/p' /etc/passwd
-f FILE 從指定文件中讀取編輯腳本
-r, -E 使用擴(kuò)展正則表達(dá)式
-i.bak 備份文件并原處編輯

#說(shuō)明: 
-ir 不支持
-i -r 支持
-ri   支持
-ni   會(huì)清空文件

常用操作:

操作作用
s替換,替換指定字符
d刪除,刪除選定的行
a增加,在當(dāng)前行下面增加一行指定內(nèi)容
i插入,在選定行上面插入一行指定內(nèi)容
c替換,將選定行替換為指定內(nèi)容
y字符轉(zhuǎn)換,轉(zhuǎn)換前后的字符長(zhǎng)度必須相同
p打印,如果同時(shí)指定行,表示打印指定行;如果不指定行,則表示打印所有內(nèi)容;如果有非打印字符,則以ASCII碼輸出。其通常與"-n"選項(xiàng)一起使用。
=打印行號(hào)
l(小寫(xiě)L)打印數(shù)據(jù)流中的文本和不可打印的ASCII字符(比如結(jié)束符$、制表符\t)

sed   -p 打印

sed   -n:禁止sed編輯器輸出

操作‘=’:打印行號(hào)

操作 “l”:打印數(shù)據(jù)流中的文本和不可打印的ASCII字符

sed   -e  多個(gè)操作

sed -n -e '命令1' -e '命令2' 文件

或者

sed -n -e '命令1;命令2' 文件

或者

sed -n '

命令1

命令2

....

' 文件

4.對(duì)指定行操作(尋址)

4.1以數(shù)字形式表示行區(qū)間

sed -n '#p'         #代表行號(hào)  打印第#行內(nèi)容
sed -n '#,@p'     #代表行號(hào)  打印第#行到第@行內(nèi)容
sed -n '$p'          #代表行號(hào)  打印最后一行內(nèi)容
sed -n '#,+@p'    #代表行號(hào)  打印第#行到第@+#行內(nèi)容
sed -e '#q'           #代表行號(hào)  打印第1行到第#行內(nèi)容

1. 

第一行
sed  -n  '1p'  3.txt
1-4行
sed  -n  '1,4p'   3.txt
最后一行
sed  -n  '$p'   3.txt

2.

用  +
打印1-2行
sed   -n  '1,+2p'   3.txt
打印2-4行
sed  -n  '2,+2p'  3.txt

3.

用  q
打印第一行到第三行
sed  -e  '3q'   3.txt

4.打印奇數(shù)行或者偶數(shù)行

4.2字符串過(guò)濾行

1.匹配文件中包含root的行

2.匹配root開(kāi)頭的行

3.匹配以bash結(jié)尾的行

4.匹配文件中,包含root或者bash的行,擴(kuò)展正則需加上-r

5.從第二行開(kāi)始,到第一個(gè)含有root行結(jié)束的行

6.匹配文件中rt中含有2個(gè)o的行

5.刪除指定行  sed  'd'

sed '/#/,/@/d' 文件名

sed會(huì)讀取每行的內(nèi)容,從第一個(gè)位置#打開(kāi)刪除功能,到第二位置@刪完后關(guān)閉刪除功能,再繼續(xù)查詢(xún)與  #和@匹配的行 進(jìn)行刪除 一直重復(fù)此操作

6.替換

6.1字符串

格式:

行范圍       s/舊字符串/新字符串/替換標(biāo)記

替換標(biāo)記

s/pattern/string/修飾符    查找替換,支持使用其它分隔符,可以是其它形式:s@@@,s###
 

替換修飾符:


g 行內(nèi)全局替換
p 顯示替換成功的行
w   /PATH/FILE 將替換成功的行保存至文件中
I,i   忽略大小寫(xiě)

替換標(biāo)記作用
數(shù)字表明新字符串將替換第幾處匹配的地方
g表明新字符串將會(huì)替換所有匹配的地方
p打印與替換命令匹配的行,與-n一起使用
w文件將替換的結(jié)果寫(xiě)到文件中
  • sed -g
  • sed -s

1.替換

sed  -n  's/root/admin/p'  /etc/passwd
###將每一行的第一個(gè)root替換為admin
sed  -n  's/root/admin/2p'  /etc/passwd
###將每行的第二個(gè)root替換為admin

sed  -n  's/root/admin/3p'  /etc/passwd
###將每行的第三個(gè)root替換成admin
sed  -n  's/root/admin/gp'  /etc/passwd
###將每行的所有root,替換成admin

替換命令的分隔符看 s后面跟的字符,3個(gè)分隔符要保持一致,如果遇到跟分隔符相同的字符則需要使用"\"來(lái)轉(zhuǎn)義

將/bin/bash 轉(zhuǎn)換為 /sbin/nologin

因?yàn)樘鎿Q的格式為 s/舊/新  此處的"/"為分隔符 但是/bin/bash與/sbin/nologin中的"/"為根,容易引起歧義

1.1可以使用"\"轉(zhuǎn)義字符將"/"轉(zhuǎn)義為普通字符

1.2.或者使用其他字符作為分隔符,且所有分隔符保持一致(s后面的內(nèi)容就是分隔符)

2.添加

2.1###給passwd文件,開(kāi)頭都加上#

sed   's/^/#/'   /etc/passwd

2.2###兩種給含有root坐在行注釋的方法

2.3###注釋前十行

2.4###重定向到文件中

3.刪除

6.2替換整行內(nèi)容

替換前與替換后的字符可以不一致

sed '#c 新內(nèi)容 文件名     #替換第#行的全部?jī)?nèi)容
或者
sed '/舊內(nèi)容/c  新內(nèi)容' 文件名       #將被篩選到(含有舊內(nèi)容)的行替換為新內(nèi)容

6.3字符替換

替換前與替換后的字符個(gè)數(shù)需要一致

sed        'y/舊內(nèi)容/新內(nèi)容/'       文件名

7.增加(插入)內(nèi)容

7.1在行前插入

$i        ###在文件最后一行,前面添加
1i        ###在文件第一行,前面添加

7.2在行后插入內(nèi)容

1a        ###在第一行后面添加
$a        ###在最后一行的后面添加

7.3插入文件內(nèi)容

7.4調(diào)換順序

8.小案例

1.顯示幾點(diǎn)到幾分的日志

sed  -n   '/2018:08:09/,/2018:09:42:37/p'   access_log

2.奇偶數(shù)

3.-i 修改文件

4.-a 追加

5.\:空格     \n:換行

6.  2i###第二行前面

7.  2c###將第二行替換

8.取反

9.分組

1.  \2的意思

2.  sed分組取地址

3.  取IP地址

-n:不自動(dòng)打印,就不會(huì)重復(fù)輸出了

-r:開(kāi)啟擴(kuò)展正則,就不用加轉(zhuǎn)義了,但是你寫(xiě)入的命令,還是要轉(zhuǎn)義

到此這篇關(guān)于Shell中sed編輯器的具體使用的文章就介紹到這了,更多相關(guān)Shell sed編輯器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在 Bash 中循環(huán)遍歷文件內(nèi)容的不同方法

    在 Bash 中循環(huán)遍歷文件內(nèi)容的不同方法

    本文介紹了在Bash腳本中遍歷文件內(nèi)容的幾種方法,包括使用while循環(huán)和read命令逐行讀取文件,使用for循環(huán)和cat命令讀取整個(gè)文件內(nèi)容,使用IFS變量進(jìn)行單詞循環(huán),以及使用awk命令進(jìn)行更高級(jí)的文本處理,每種方法都有其適用的場(chǎng)景和優(yōu)缺點(diǎn),感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • Linux文件操作命令詳解與實(shí)戰(zhàn)

    Linux文件操作命令詳解與實(shí)戰(zhàn)

    Linux 是一個(gè)文件為核心的操作系統(tǒng),文件的操作貫穿了系統(tǒng)管理和開(kāi)發(fā)的方方面面,從創(chuàng)建、修改、查找文件到權(quán)限管理和壓縮操作,Linux 提供了豐富的命令支持,本文將深入解析 Linux 文件操作的常用命令,幫助讀者全面掌握其用法及應(yīng)用場(chǎng)景,需要的朋友可以參考下
    2024-12-12
  • 5個(gè)實(shí)用的shell腳本面試題和答案

    5個(gè)實(shí)用的shell腳本面試題和答案

    這篇文章主要介紹了5個(gè)實(shí)用的shell腳本面試題和答案,給出的腳本堪稱(chēng)編碼規(guī)范,麻雀雖小,異常處理,友好提示,一應(yīng)俱全,值得學(xué)習(xí),需要的朋友可以參考下
    2014-06-06
  • Linux實(shí)現(xiàn)壓縮文件的生成與查看的常用命令總結(jié)

    Linux實(shí)現(xiàn)壓縮文件的生成與查看的常用命令總結(jié)

    如果你是后端程序員,我想你一定見(jiàn)過(guò)*.tar.gz、*.zip、*.jar后綴的文件吧,這些都是壓縮文件,那這些文件都是怎么生成的,又有哪些關(guān)鍵區(qū)別呢?本文將帶你一起了解這些文件和配套的操作命令,以及其經(jīng)常使用的場(chǎng)景
    2022-09-09
  • Linux查看當(dāng)前系統(tǒng)的資源占用情況的常用命令

    Linux查看當(dāng)前系統(tǒng)的資源占用情況的常用命令

    本文介紹了幾種常用的系統(tǒng)性能監(jiān)控工具,包括top、free、vmstat和iostat等命令的使用方法及其參數(shù)說(shuō)明,通過(guò)這些工具可以有效監(jiān)控CPU、內(nèi)存、磁盤(pán)IO等關(guān)鍵資源的狀態(tài),需要的朋友可以參考下
    2025-04-04
  • Shell腳本中until循環(huán)語(yǔ)句的用法詳解

    Shell腳本中until循環(huán)語(yǔ)句的用法詳解

    在 Linux Shell 編程世界中,循環(huán)結(jié)構(gòu)是控制程序流程、實(shí)現(xiàn)重復(fù)任務(wù)的核心工具之一,我們常聽(tīng)到 for 和 while 循環(huán),但有一個(gè)低調(diào)卻實(shí)用的反向選手:until 循環(huán),今天,我們將深入探索 Shell 腳本中的 until 循環(huán)語(yǔ)句,需要的朋友可以參考下
    2026-03-03
  • shell腳本 自動(dòng)創(chuàng)建用戶(hù)詳解及實(shí)例代碼

    shell腳本 自動(dòng)創(chuàng)建用戶(hù)詳解及實(shí)例代碼

    這篇文章主要介紹了shell腳本 自動(dòng)創(chuàng)建用戶(hù)詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • 一個(gè)shell小案例(創(chuàng)建日期目錄)

    一個(gè)shell小案例(創(chuàng)建日期目錄)

    需要在多個(gè)目錄中 (如:beijing shanghai tianjin guangzhou 等等) 創(chuàng)建子目錄(以年份命名),然后進(jìn)入子目錄,新建目錄并以當(dāng)天的日期命名
    2016-08-08
  • shell腳本之判斷輸入?yún)?shù)是否為整數(shù)值的實(shí)例

    shell腳本之判斷輸入?yún)?shù)是否為整數(shù)值的實(shí)例

    今天小編就為大家分享一篇shell腳本之判斷輸入?yún)?shù)是否為整數(shù)值的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • 簡(jiǎn)化shell終端命令輸入的腳本式快捷鍵工具

    簡(jiǎn)化shell終端命令輸入的腳本式快捷鍵工具

    這篇文章主要介紹了簡(jiǎn)化shell終端命令輸入的腳本式快捷鍵工具,這是一個(gè)shell腳本寫(xiě)的簡(jiǎn)化shell命令輸入的快捷鍵工具,需要的朋友可以參考下
    2015-03-03

最新評(píng)論

庄河市| 东台市| 汤阴县| 任丘市| 射阳县| 江津市| 定兴县| 赤水市| 桦甸市| 阳曲县| 云林县| 会泽县| 象州县| 阜南县| 木里| 富顺县| 海城市| 永定县| 陆河县| 阿勒泰市| 鹿泉市| 仲巴县| 新昌县| 体育| 平邑县| 措勤县| 靖远县| 临沂市| 洪泽县| 奈曼旗| 伊金霍洛旗| 海南省| 珠海市| 龙南县| 阳谷县| 建德市| 岳阳市| 醴陵市| 江阴市| 黎川县| 昔阳县|