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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

linux

Linux文本三剑客之sed仗剑走天涯

發(fā)布時(shí)間:2025/5/22 linux 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux文本三剑客之sed仗剑走天涯 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一,sed是什么?

? sed是Strem Editor(流編輯器)縮寫,是操作、過(guò)濾和轉(zhuǎn)換文本內(nèi)容的強(qiáng)大工具。對(duì)文件內(nèi)容逐行(行編輯器,一行讀取一次,對(duì)行編輯)進(jìn)行處理調(diào)用操作并顯示到STDOUT,常用功能有增刪改查,過(guò)濾,取行。


二,sed的工作流程

? (1)sed默認(rèn)不編輯原文件,而是逐行操作處理,把當(dāng)前處理的行存儲(chǔ)在臨時(shí)緩存空間,稱為“模式空間”(pattern space)。

? (2)接著在pattern space內(nèi)進(jìn)行模式匹配,即和指定條件做匹配

? ? ? 不滿足模式:輸出到標(biāo)準(zhǔn)輸出STDOUT;

????? 滿足模式:進(jìn)行指定的模式操作,再輸出到STDOUT;

? (3)第二個(gè)特殊的緩存空間——“保持空間”:hold space,臨時(shí)保存操作在另一處緩存空間;

? (4)當(dāng)執(zhí)行pattern space和 hold space里相關(guān)選項(xiàng)的時(shí)候來(lái)回進(jìn)行之間的數(shù)據(jù)流編輯操作;

? (5)最后根據(jù)操作執(zhí)行hold space空間操作,選擇性顯示到STDOUT; ?

三,sed的語(yǔ)法格式

?? sed [OPTION]... ?'script' ?[input-file] ...

?? 注意:1.sed和后面的選項(xiàng)之間至少有一個(gè)空格。

???? 2.script:指的是AddressCommands(地址定界編輯命令),AddressCommands中間無(wú)空格,直接連接為一個(gè)選項(xiàng)操作

???? 3.input-file(輸入文件)是可選項(xiàng),sed還能夠從標(biāo)準(zhǔn)輸入如管道獲取輸入。


四,sed的常用選項(xiàng)和地址定界

?? (1)OPTION常用選項(xiàng):

-n:不輸出模式空間中的內(nèi)容至屏幕; -e?script,?--expression=script:多點(diǎn)編輯; -f??/PATH/TO/SED_SCRIPT_FILE:每行一個(gè)編輯命令; -r,?--regexp-extended:支持使用擴(kuò)展正則表達(dá)式; -i[SUFFIX],?--in-place[=SUFFIX]:直接編輯原文件?;(編輯操作的結(jié)果直接保存在原文件中)

?? (2)地址定界:

?? ①空地址:什么都不寫時(shí),表示對(duì)全文進(jìn)行處理;
?? ②單地址:
?????? #:指定行;
?????? /pattern/:被此模式所匹配到的每一行;注意:【/ /】是固定模式符號(hào),不能省略

?? ③地址范圍:(#表示任意數(shù)字)
?????? #,#:從某行到某行,第二個(gè)#大于第一個(gè)#

?????? #,+#:從某行開(kāi)始到加多少行(3,+8 :第3行向下開(kāi)始一共8行,包含第三行)
?????? #,/pattern1/:(從指定的行開(kāi)始到第一次被模式所匹配的行結(jié)束的所有行)
?????? /pattern1/,/pattern2/:從第一次匹配到的模式1到第二次匹配到的模式2
?????? $:最后一行;
?? ④步進(jìn):~,#~#?? 從第幾行

?????? 1~2:所有奇數(shù)行。 ?? 從第一行開(kāi)始,每次加兩行讀取

?????? 2~2:所有偶數(shù)行。??? 從第二行開(kāi)始,每次加兩行讀取


五,sed編輯命令

? (1)常用編輯命令:

? d:刪除

~]#?sed?'1d'?FILE?????????????????#刪除第一行 ~]#?sed??'2,$d'?FILE??????????????#刪除第二行到最后一行

? p:列印;顯示模式空間中的內(nèi)容,但默認(rèn)會(huì)輸出2次匹配的結(jié)果,因此使用-n取消默認(rèn)輸出;

~]#?sed?-n?'1p'?FILE?????????????#顯示第一行 ~]#?sed?-n?'2,$p'?FILE??????????????#顯示第二行到最后一行

? a \text:新增;在行后面追加文本“text”,支持使用\n實(shí)現(xiàn)多行追加;?

~]#?sed???'/^test/a\this?is'?FILE????????#將?this?is?追加到以test開(kāi)頭的行后面 ~]#?sed???'2a\this?is\nis?this'?FILE?????#將?this?is?和?is?this?多行追加第二行后面

? i? \text:插入;在行前面插入文本“text”,支持使用\n實(shí)現(xiàn)多行插入;

~]#?sed?-i?'5i\this?is'?FILE????????#在文件第5行之前插入this?is? ~]#?sed?-i?'5i\this?is\nis?this'?FILE??#將?this?is?和?is?this?多行插入第5行之前

? c \text:按行替換;把匹配到的行替換為此處指定的文本“text”;

~]#?sed??'2c\this?is'?FILE????????????#將文件第二行替換為this?is

? w /PATH/TO/SOMEFILE:保存模式空間匹配到的行至指定的文件中;

~]#?sed?-n?'/test/w?file'?example?????#在example中所有包含test的行都被寫入file里

? r? /PATH/FROM/SOMEFILE:讀取指定文件的內(nèi)容至當(dāng)前文件被模式匹配到的行后面;文件合并;

~]#?sed???'2r??file'???filename???#將file的內(nèi)容讀進(jìn)來(lái)顯示在filename文件第二行后面

? =:為模式匹配到的行打印行號(hào);

~]#?sed???'/this?is/='???FILE???????#顯示?this?is?的行號(hào)

? !:條件取反;

?? 地址定界!編輯命令;

~]#?sed?'1!d'?FILE?????????#除了第一行全部刪除

? s///:查找替換,其分隔符可自行指定,常用的有s@@@, s###等;

~]#?sed?'s/book/books/'?FILE????????#把每一行中第一處?book?替換成?books

?? 替換標(biāo)記:

???? g:全局替換;

~]#?sed?'s/book/books/g'?FILE????????#把每一行中的所有?book?替換成?books ~]#?sed?'s/book/books/3g'?FILE???????#從每一行的第三處開(kāi)始替換

???? w /PATH/TO/SOMEFILE:將替換成功的結(jié)果保存至指定文件中;
???? p:顯示替換成功的行;

~]#?sed?'s/book/books/3gp'?FILE???????#顯示替換成功的行


? 練習(xí):

? 1.刪除text9文件中所有以空白字符開(kāi)頭的行的行首的所有空白字符;

~]#?sed?'s@^[[:space:]]\+@@'?text9

??


? 2.刪除text9文件中所有以#開(kāi)頭的行的行首的#號(hào)及#后面的所有空白字符;

~]#?sed??'s@^#[[:space:]]*@@'?text9

??


? 3.輸出一個(gè)絕對(duì)路徑給sed命令,取出其目錄,其行為類似于dirname;

~]#?echo?"/var/log/messages/"?|?sed?'s@[^/]\+/\?$@@' ~]#?echo?"/var/log/messages"?|?sed?-r?'s@[^/]+/?$@@'

??

? (2)高級(jí)編輯命令:

?? h:把模式空間中的內(nèi)容覆蓋至保持空間中;
?? H:把模式空間中的內(nèi)容追加至保持空間中;
?? g:把保持空間中的內(nèi)容覆蓋至模式空間中;
?? G:把保持空間中的內(nèi)容追加至模式空間中;

?? P:打印多行匹配空間的第一行。

?? x:把模式空間中的內(nèi)容與保持空間中的內(nèi)容互換;
?? n:覆蓋讀取匹配到的行的下一行至模式空間中;
???N:追加讀取匹配到的行的下一行至模式空間中;
?? d:刪除模式空間中的行;
?? D:刪除多行模式空間中的所有行;


? 實(shí)例:

?? sed? -n? 'n;p'? FILE:顯示偶數(shù)行;
?? sed? '1!G;h;$!d'? FILE:逆序顯示文件的內(nèi)容;
?? sed? ’$!d'? FILE:取出最后一行;
?? sed? '$!N;$!D' FILE:取出文件后兩行;
?? sed '/^$/d;G' FILE:刪除原有的所有空白行,而后為所有的非空白行后添加一個(gè)空白行;
?? sed? 'n;d'? FILE:顯示奇數(shù)行;
?? sed 'G' FILE:在原有的每行后方添加一個(gè)空白行


六,實(shí)戰(zhàn)案例

?? 1.變量替換

? ?


?? 2.分組替換\( \)和\1的用法:

?? \( \)的功能可以記住正則表達(dá)式的一部分,其中,\1為第一個(gè)記住的模式即第一個(gè)小括號(hào)中的匹配內(nèi)容,\2第二記住的模式,即第二個(gè)小括號(hào)中的匹配內(nèi)容,sed最多可以記住9個(gè)。

??

?? ①^.*am–>這句的意思是以任意字符開(kāi)頭到am為止,匹配文件中的I am字符串;
?? ②\([a-z].*\)–>這句的外殼就是括號(hào)\(\),[a-z].*合起來(lái)就是匹配任意多個(gè)字符,因?yàn)閛od字符串是我們需要的,因此用括號(hào)括起來(lái)匹配,后面通過(guò)\1來(lái)取good字符串;
?? ③ b.*$–>表示以空格b起始,任意字符結(jié)尾,實(shí)際就是匹配good字符串后,緊接著的字符串 boy.;
?? ④sed默認(rèn)識(shí)別基本正則表達(dá)式,sed加上-r選項(xiàng)則可以使用擴(kuò)展正則表達(dá)式。


?? 3.特殊符號(hào) & 代表被替換的內(nèi)容

?? 將text9前三行中 b 改成 --b--

~]#?sed?'1,3s#b#--&--#g'?text9

??


?? 4.打印奇偶行

?? 打印奇數(shù)行:

~]#?sed?-n?'1~2p'?text9 ~]#?sed?-n?'p;n'?text9

??

?? 打印偶數(shù)行:

~]#?sed?-n?'n;p'?text9 ~]#?sed?-n?'2~2p'?text9

??


?? 5.獲取本機(jī)IP地址

~]#?ifconfig?|?sed?-n?'2p'?|?sed?'s/^.*inet//g'?|?sed?'s/netmask.*$//g'

??


?? 6.將text9中偶數(shù)行末尾替換成 --w

sed?'2~2s#$#--w#'?text9 sed?'n;s#$#--w#'?text9 sed?'1~2!s#$#--w#'?text9



??

轉(zhuǎn)載于:https://blog.51cto.com/wqiang/1753180

總結(jié)

以上是生活随笔為你收集整理的Linux文本三剑客之sed仗剑走天涯的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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

主站蜘蛛池模板: 日韩欧美精品在线观看 | 老熟妇一区二区 | 加勒比在线一区 | 久久久wwww | 国产欧美精品一区二区在线播放 | 五月婷婷社区 | 久久精品久久久精品美女 | 国模福利视频 | 亚洲国产一区二区在线观看 | 中文字幕av一区 | 国产在线免费av | 亲子乱一区二区三区 | 玖玖爱免费视频 | 激情黄色小说网站 | 成熟女人毛片www免费版在线 | 强乱中文字幕 | 中文字幕第二页 | 久久久全国免费视频 | 欧洲女同同性吃奶 | 日韩av在线导航 | 一区二区三区 日韩 | 久久91亚洲 | 亚洲一二三区av | 色狠狠一区二区 | 人妻少妇偷人精品久久久任期 | 国产大片黄 | 国产色秀 | 久久久久久久久国产精品一区 | 玉丸(双性调教) | 热久久91| 91精品国产综合久久久久久久 | 红杏出墙记 | 精品九一| 99re在线精品 | 亚洲午夜精品福利 | 中国女人av| 欲求不满的岳中文字幕 | 狠狠狠狠干 | caoporn成人| 在线日韩欧美 | www,jizz,com| 自拍偷拍在线视频 | 不卡免费视频 | 久久精品免费电影 | 国产视频在线一区二区 | 男生和女生一起差差差很痛的视频 | 国产美女主播视频 | 日本三级全黄 | 色97色| 嫩草影院在线观看视频 | 夜夜操操操| 同性色老头性xxxx老头 | 91精选视频 | 邻居校草天天肉我h1v1 | 精品视频99 | 欧美男人亚洲天堂 | 欧美一级在线 | 午夜精品在线观看 | 亚洲国产精彩中文乱码av | 美女扒开让男人桶爽 | 久草a视频 | 啊灬啊灬啊灬秀婷 | 少妇被按摩师摸高潮了 | 91视频污在线观看 | 综合久久国产 | 欧美一二在线 | 国产制服丝袜在线 | 青青草国产在线视频 | 爱爱精品 | av一卡| av黄色免费在线观看 | 中文文字幕一区二区三三 | 91爱爱.com| 日本人极品人妖高潮 | 亚洲国产成人在线 | 精品无码久久久久久久久成人 | jizz教师| 国产九区| 亚洲国产一级 | 精品国产人妻一区二区三区 | 污污视频在线观看网站 | 婷婷丁香社区 | 一区二区日韩视频 | 国产一区二区网址 | 国产夜夜嗨 | 日本电影一区二区三区 | 国产女上位 | 亚洲一区在线视频观看 | 日韩免费影视 | 国产精品亚洲二区在线观看 | 亚洲精品在线观看网站 | 狠狠地日 | 开心激情播播 | 有码在线视频 | 乱子伦一区二区三区 | 亚洲男人天堂 | 老司机深夜福利在线观看 | 日本免费一区二区三区 | 在线观看 中文字幕 |