RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何掌握Linux文本處理

馬哥Linux運(yùn)維 ? 來(lái)源:馬哥Linux運(yùn)維 ? 2024-11-10 13:40 ? 次閱讀

目錄

sed用法

模式空間與保持空間

sed命令選項(xiàng)

sed命令的基本語(yǔ)法

sed命令選項(xiàng)

基礎(chǔ)sed命令

高階sed命令

基礎(chǔ)sed命令

sed命令的基本語(yǔ)法

sed OPTIONS… [SCRIPT] [INPUTFILE…]

常用的選項(xiàng):

-n,–quiet: 不輸出模式空間中的內(nèi)容

-i: 直接編輯原文件,默認(rèn)不對(duì)原文件進(jìn)行操作

-e: 可以使用多個(gè)命令(腳本)進(jìn)行操作

-f /path/from/sed_script: 從指定的文本中讀取處理腳本

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

sed命令選項(xiàng)

替換標(biāo)記
g:表示行內(nèi)全面替換
w:表示把行寫(xiě)入一個(gè)文件
x:表示互換模式空間的文本和保持空間的文本
y:表示把一個(gè)字符翻譯為另外的字符(不用于正則表達(dá)式)
單行模式空間
a :新增, a 的后面可以接字串,而這些字串會(huì)在新的一行出現(xiàn)(目前的下一行)

c :取代, c 的后面可以接字串,這些字串可以取代 n1,n2 之間的行!

d :刪除,因?yàn)槭莿h除,所以 d 后面通常不接任何東西;

i :插入, i 的后面可以接字串,而這些字串會(huì)在新的一行出現(xiàn)(目前的上一行);

p :打印,即將某個(gè)選擇的數(shù)據(jù)印出。通常 p 會(huì)與參數(shù) sed -n 一起運(yùn)行

s :取代,通常這個(gè) s 的動(dòng)作可以搭配正則表達(dá)式!例如 1,20s/old/new/g

n:讀取下一個(gè)輸入行, 用下一個(gè)命令處理新的行

y:把一個(gè)或多個(gè)字符替換成另一個(gè)字符
a的用法

[root@localhost ~]# vim xbz
[root@localhost ~]# cat xbz
a b c
d
c
b
a
[root@localhost ~]# sed '3abbxxxx' xbz //在第三行下面(第四行)進(jìn)行新增
a b c
d
c
bbxxxx
b
a
[root@localhost ~]# sed '/c/abbxxxx' xbz  //在匹配的參數(shù)(c)下一行進(jìn)行添加
a b c
bbxxxx
d
c
bbxxxx
b
a

c的用法

[root@localhost ~]# cat xbz 
a b c
d
c
b
a
[root@localhost ~]# sed '2cxxb' xbz //取代第二行
a b c
xxb
c
b
a
[root@localhost ~]# cat xbz 
a b c
d
c
b
a

[root@localhost ~]# sed '/d/caa' xbz  //在匹配的參數(shù)(d)進(jìn)行取代
a b c
aa
c
b
a

d的用法

root@localhost ~]# cat xbz 
a b c
d
c
b
a

[root@localhost ~]# sed '1d' xbz //刪除第一行
d
c
b
a

[root@localhost ~]# cat xbz 
a b c
d
c
b
a

[root@localhost ~]# sed '/c/d' xbz //在匹配的參數(shù)(c)進(jìn)行整行刪除
d
b
a

i的用法

[root@localhost ~]# cat xbz 
a b c
d
c
b
a

[root@localhost ~]# sed '2i3838' xbz  //在第二行進(jìn)行插入
a b c
3838
d
c
b
a

[root@localhost ~]# cat xbz 
a b c
d
c
b
a

[root@localhost ~]# sed '/c/i6868' xbz //在匹配的參數(shù)(c)那一行進(jìn)行插入
6868
a b c
d
6868
c
b
a

p的用法

[root@localhost ~]# cat xbz 
a b c
d
c
b
a

[root@localhost ~]# sed -n '/b/p' xbz //-n選項(xiàng):只顯示匹配處理的行(否則會(huì)輸出所有)(也就是關(guān)閉默認(rèn)的輸出),只是打印帶b的行
a b c
b

s的用法

[root@localhost ~]# cat xbz 
a b c
d
c
bbb
a

[root@localhost ~]# sed 's/b/a/' xbz //將匹配的參數(shù)(b)每行里的第一個(gè)參數(shù)進(jìn)行替換
a a c
d
c
abb
a
[root@localhost ~]# cat xbz 
a b c
d
c
bbb
a

[root@localhost ~]# sed 's/b/a/g' xbz //在上面的基礎(chǔ)是加上g就可以全部進(jìn)行替換
a a c
d
c
aaa
a

n的用法
此處的n不是sed -n的n的那種用法,是n讀取下一個(gè)輸入行

[root@localhost ~]# cat xbz 
a b c
d
c
bbb
a

[root@localhost ~]# sed -n '/a/n;p' xbz //匹配到的參數(shù)(a)下面的所有行
d
c
bbb


y的用法

[root@localhost ~]# cat xbz 
a b c
d
c
bbb
a
[root@localhost ~]# sed '3y/c/C/' xbz //將匹配到的第三行小寫(xiě)c改為大寫(xiě)C
a b c
d
C
bbb
a

高階sed命令

模式空間與保持空間

模擬空間:
當(dāng)前處理輸出的緩沖空間,因?yàn)閟ed就是一次處理一行的內(nèi)容,就會(huì)把這一行的內(nèi)容提取到模式空間,然后用sed命令處理這一行的內(nèi)容,處理完成后輸出到屏幕,接著處理下一行 的內(nèi)容
保持空間:
保持空間就是sed的另一個(gè)緩沖區(qū),此緩沖區(qū)如其名,不會(huì)自動(dòng)清空內(nèi)容,也不會(huì)把緩沖區(qū)的內(nèi)容打印到的標(biāo)準(zhǔn)輸出中
模式空間與保持空間的關(guān)系
模式空間:相當(dāng)于流水線,文本行再模式空間中進(jìn)行處理;
保持空間:相當(dāng)于倉(cāng)庫(kù),在模式空間對(duì)數(shù)據(jù)進(jìn)行處理時(shí),可以把數(shù)據(jù)臨時(shí)存儲(chǔ)到保持空間;作為模式空間的一個(gè)輔助臨時(shí)緩沖區(qū),但又是相互獨(dú)立,可以進(jìn)行交互,命令可以尋址模式空間但是不能尋址保持空間??梢允褂酶呒?jí)命令h,H,g,G與模式空間進(jìn)行交互。

sed命令選項(xiàng)

多行空間模式
N:讀取匹配到的行的下一行追加至模式空間
P:打印模式空間開(kāi)端至 內(nèi)容,并追加到默認(rèn)輸出之前
D:如果模式空間包含換行符,則刪除直到第一個(gè)換行符的模式空間中的文本, 并不會(huì)讀取新的輸入行,而使用合成的模式空間重新啟動(dòng)循環(huán)。如果模式空間 不包含換行符,則會(huì)像發(fā)出d命令那樣啟動(dòng)正常的新循環(huán)
N追加下一行

[root@localhost ~]# cat xbz.txt 
Consult Section 3.1 in the Owner and Operator
Guide for a description of the tape drives
available on your system.
[root@localhost ~]# sed -n '/Operator$/{N;p}' xbz.txt 
Consult Section 3.1 in the Owner and Operator
Guide for a description of the tape drives
[root@localhost ~]# sed -n '/Operator$/{N;s/Owner and Operator
Guide/installation Guide/g;p}' xbz.txt 
Consult Section 3.1 in the installation Guide for a description of the tape drives
[root@localhost ~]# sed '/Operator$/{N;s/Owner and Operator
Guide/installation Guide/g}' xbz.txt 
Consult Section 3.1 in the installation Guide for a description of the tape drives
available on your system.
//我們假設(shè)想要將“Owner and 0perator Guide”換成“l(fā)nstallation Guide”,但是我們發(fā)現(xiàn)它出現(xiàn)在文件中的兩行上,“Operator”和“Guide”被分開(kāi)了。
Owner and Operator Guide 換成 installation Guide
空格用

D多行刪除

[root@localhost ~]# cat test

This is the header line.
This is a data line.

This is the last line.
[root@localhost ~]# sed '/^$/{N ; /header/D}' test //刪除模式空間的第一行
This is the header line.
This is a data line.

This is the last line.

P多行打印

[root@localhost ~]# cat xxb 
Here are examples of the UNIX
System. Where UNIX
System appears, it should be the UNIX
Operating System.
[root@localhost ~]# sed -n '/UNIX$/p' xxb 
Here are examples of the UNIX
System. Where UNIX
System appears, it should be the UNIX
[root@localhost ~]# sed -n '/UNIX$/{N;p}' xxb 
Here are examples of the UNIX
System. Where UNIX
System appears, it should be the UNIX
Operating System.
[root@localhost ~]# sed -n '/UNIX$/{N;/
System/{p}}' xxb
Here are examples of the UNIX
System. Where UNIX
[root@localhost ~]# sed -n '/UNIX$/{N;/
System/{s// Operating &/g;p}}' xxb
Here are examples of the UNIX Operating 
System. Where UNIX
[root@localhost ~]# sed -n '/UNIX$/{N;/
System/{s// Operating &/g;P;D;p}}' xxb
Here are examples of the UNIX Operating 
System. Where UNIX Operating 

保持空間

命令 縮寫(xiě) 功能
Hold h(復(fù)制)或H (追加) 上傳 將模式空間的內(nèi)容復(fù)制或追加到保持空間
Get g或G下載 將保持空間的內(nèi)容復(fù)制或追加到模式空間
Exchange x 交換保持空間和模式空間的內(nèi)容

[root@localhost ~]# cat abc
1
2
11
22
111
222
[root@localhost ~]# sed '/1/{h;d};/2/G' abc //匹配1將內(nèi)容放入保持空間,刪除,在將匹配2的內(nèi)容追加模式空間
2
1
22
11
222
111

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11292

    瀏覽量

    209322
  • SED
    SED
    +關(guān)注

    關(guān)注

    0

    文章

    25

    瀏覽量

    27085
  • 腳本
    +關(guān)注

    關(guān)注

    1

    文章

    389

    瀏覽量

    14858

原文標(biāo)題:深入淺出Sed:掌握Linux文本處理的終極利器

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    詳解Linux Shell文本處理工具

      今天給大家分享日常工作中常用到的shell文本處理工具,可以說(shuō)是史上最全了,大家掌握住這些工具,可以在日常運(yùn)維工作中起到事半功倍的作用!
    發(fā)表于 10-27 09:19 ?537次閱讀

    Linux中g(shù)rep、sed和awk命令詳解

    今天給大家聊一聊Linux文本操作的`三劍客:awk、grep、sed`,因其功能強(qiáng)大、使用頻繁,且是Linux文本處理的得力利器,常被稱之為`
    發(fā)表于 04-26 17:20 ?3239次閱讀
    <b class='flag-5'>Linux</b>中g(shù)rep、sed和awk命令詳解

    Linux中sed命令用法

    這篇文章為初學(xué)者提供了關(guān)于 Linux 中 sed 命令的全面指南,涵蓋了其歷史、用途以及一些實(shí)用的技巧和竅門(mén)。通過(guò)掌握 sed,您可以高效處理文本處理任務(wù),這對(duì)于任何使用
    發(fā)表于 07-21 10:38 ?355次閱讀
    <b class='flag-5'>Linux</b>中sed命令用法

    什么是VIM?VIM文本編輯器的三種工作模式

    Vim (Vi improved)是從 Vi 發(fā)展出來(lái)的一個(gè)文本編輯器,簡(jiǎn)單的來(lái)說(shuō),Vi 是老式的文本處理器,功能已經(jīng)很齊全了,但還是有可以進(jìn)步的地方。
    發(fā)表于 09-06 16:04 ?4915次閱讀
    什么是VIM?VIM<b class='flag-5'>文本</b>編輯器的三種工作模式

    使用 Linux/Unix 進(jìn)行文本處理

    使用 Linux/Unix 進(jìn)行文本處理正則表達(dá)式 翻譯領(lǐng)域不乏讓人摸不著頭腦的詞匯,比如"句柄"、"套接字"、"魯棒性"。當(dāng)然
    發(fā)表于 11-24 15:39

    shell文本處理方法是什么

    shell文本處理三劍客—grep
    發(fā)表于 05-27 12:32

    易語(yǔ)言-文本處理

    易語(yǔ)言是一門(mén)以中文作為程序代碼編程語(yǔ)言學(xué)習(xí)例程:易語(yǔ)言-文本處理
    發(fā)表于 06-06 17:43 ?1次下載

    Python網(wǎng)頁(yè)爬蟲(chóng),文本處理,科學(xué)計(jì)算,機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘工具集

    本文檔的主要內(nèi)容詳細(xì)介紹的是Python工具包合集包括了:網(wǎng)頁(yè)爬蟲(chóng)工具集,文本處理工具集,Python科學(xué)計(jì)算工具包,Python機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘 工具包
    發(fā)表于 09-07 17:14 ?37次下載
    Python網(wǎng)頁(yè)爬蟲(chóng),<b class='flag-5'>文本處理</b>,科學(xué)計(jì)算,機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘工具集

    Linux中的Grep正則表達(dá)式詳細(xì)資料說(shuō)明

    grep是Linux中用于文本處理的最有用和功能最強(qiáng)大的命令之一。 grep在一個(gè)或多個(gè)輸入文件中搜索與正則表達(dá)式匹配的行,并將每條匹配的行寫(xiě)入標(biāo)準(zhǔn)輸出。
    的頭像 發(fā)表于 06-21 11:39 ?2195次閱讀

    如何優(yōu)雅地使用bert處理長(zhǎng)文本

    /jietang/publications/NIPS20-Ding-et-al-CogLTX.pdf Github: https://github.com/Sleepychord/CogLTX bert在長(zhǎng)文本處理
    的頭像 發(fā)表于 12-26 09:17 ?8762次閱讀
    如何優(yōu)雅地使用bert<b class='flag-5'>處理</b>長(zhǎng)<b class='flag-5'>文本</b>

    文本處理技巧之正則表達(dá)式

    在LabVIEW開(kāi)發(fā)過(guò)程中,有很多地方都需要處理文本數(shù)據(jù),比如數(shù)據(jù)通訊、報(bào)表生成、協(xié)議解析、文件I/O、界面交互等,那有沒(méi)有一個(gè)工具可以幫助我們快速處理文本數(shù)據(jù)呢?答案是有的,那就是:
    的頭像 發(fā)表于 03-07 10:24 ?3928次閱讀

    單日獲客成本超20萬(wàn),國(guó)產(chǎn)大模型開(kāi)卷200萬(wàn)字以上的長(zhǎng)文本處理

    更精準(zhǔn)的推理和高并發(fā)流量以外,似乎已經(jīng)沒(méi)有太多值得廠商大肆宣傳的特性了,直到最近超長(zhǎng)文本處理的爆火。 ? 國(guó)產(chǎn)大模型的新卷法,長(zhǎng)文本處理 ? 當(dāng)下將大模型長(zhǎng)文本處理炒熱的,無(wú)疑是來(lái)自月之暗面的Kimi。作為去年發(fā)布的大模型,Ki
    的頭像 發(fā)表于 03-27 00:53 ?3361次閱讀
    單日獲客成本超20萬(wàn),國(guó)產(chǎn)大模型開(kāi)卷200萬(wàn)字以上的長(zhǎng)<b class='flag-5'>文本處理</b>

    MiniMax推出“海螺AI”,支持超長(zhǎng)文本處理

    近日,大模型公司MiniMax宣布,其全新產(chǎn)品“海螺AI”已正式上架。這款強(qiáng)大的AI工具支持高達(dá)200ktokens的上下文長(zhǎng)度,能夠在1秒內(nèi)處理近3萬(wàn)字的文本。
    的頭像 發(fā)表于 05-17 09:30 ?730次閱讀

    Linux中cut命令的實(shí)用示例

    Linux command cut 用于文本處理。您可以使用此命令通過(guò)選擇列從文件中提取部分文本。
    的頭像 發(fā)表于 08-05 15:14 ?313次閱讀

    Linux三劍客之Sed:文本處理神器

    關(guān)于linux三劍客 grep,過(guò)濾關(guān)鍵字信息數(shù)據(jù)。主要是用于查文本內(nèi)的數(shù)據(jù) sed ,對(duì)文本數(shù)據(jù)進(jìn)行編輯,修改原文件內(nèi)容 awk,對(duì)文件數(shù)據(jù)過(guò)濾,提取,并且能實(shí)現(xiàn),格式化輸出 awk對(duì)文件數(shù)據(jù)
    的頭像 發(fā)表于 12-16 15:58 ?178次閱讀
    <b class='flag-5'>Linux</b>三劍客之Sed:<b class='flag-5'>文本處理</b>神器
    RM新时代网站-首页