chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

為什么說(shuō)每個(gè)Linux極客都需要了解Sed和Awk

jf_ZqFkd6Up ? 來(lái)源:Linux迷 ? 作者:Linux迷 ? 2022-11-22 11:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

sed 和 awk 是每個(gè) Linux 高級(jí)用戶最喜歡的工具。但它們是什么?以及如何使用它們來(lái)處理文本文件?兩個(gè)最被低估的 Linux 實(shí)用程序是 sed 和 awk。盡管它們看起來(lái)有點(diǎn)神秘,但如果您必須對(duì)大段代碼或文本進(jìn)行重復(fù)更改,或者如果您必須分析某些文本,sed 和 awk 是極為有用的。那么,它們是什么?它們是如何使用的?以及,當(dāng)它們組合在一起時(shí),它們?nèi)绾问固幚砦谋咀兊酶菀祝?/span>

什么是sed?

sed 由傳奇的計(jì)算先驅(qū) Lee E. McMahon 于 1971 年在貝爾實(shí)驗(yàn)室開(kāi)發(fā)。該名稱代表“流編輯器”。sed 允許您通過(guò)一種緊湊而簡(jiǎn)單但圖靈完備的編程語(yǔ)言以編程方式編輯正文或文本流。sed 的工作方式很簡(jiǎn)單:它將文本逐行讀取到緩沖區(qū)中。對(duì)于每一行,它將在適用的情況下執(zhí)行預(yù)定義的指令。例如,如果有人要編寫一個(gè) sed 腳本,將單詞“beer”替換為“soda”,然后傳入一個(gè)包含“99 Bottles of Beer on the Wall”完整歌詞的文本文件,它將通過(guò)逐行打印該文件,并打印出“99 Bottles of Soda on the Wall”,依此類推。最基本的 sed 腳本是“Hello World”。在這里,我們使用僅輸出字符串的 echo 命令來(lái)打印“Hello World”。但是我們將它傳遞給 sed,并告訴它用“LinuxMi.com”替換“World”。一目了然。

		
			
linuxmi@linuxmi:~/www.linuxmi.com$ echo "Hello World" | sed s/World/LinuxMi.com/

		38900f7a-6a13-11ed-8abf-dac502259ad0.png如果您需要進(jìn)行一些更復(fù)雜的編輯,您還可以將 sed 指令組合到文件中。讓我們將 A-ha 的“ Take On Me ”的歌詞替換為Greg的“I”、“Me”和“My”的每個(gè)實(shí)例。首先,將歌曲的歌詞放入名為linuxmi.com.txt的文本文件中。然后打開(kāi)您喜歡的文本編輯器,并添加以下行。確保您創(chuàng)建的文件以.sed結(jié)尾。

		
s/I/Greg/
s/Me/Greg/
s/me/Greg/
s/My/Greg/
s/my/Greg/
您可能會(huì)注意到上面示例中的重復(fù)(例如 s/me/Greg/ 和 s/Me/Greg/)。這是因?yàn)?sed 的某些版本,例如 macOS 附帶的版本,不支持不區(qū)分大小寫的匹配。因此,我們必須為每個(gè)單詞編寫兩條指令,以便 sed 識(shí)別大寫和非大寫版本。這不會(huì)完美地工作,就好像您已經(jīng)手動(dòng)替換了“I”、“Me”和“My”的每個(gè)實(shí)例。請(qǐng)記住,我們只是將其用作練習(xí)來(lái)演示如何將 sed 指令組合到一個(gè)腳本中,然后使用單個(gè)命令執(zhí)行它們。然后,我們需要調(diào)用該文件。為此,請(qǐng)運(yùn)行此命令。

		
			
linuxmi@linuxmi:~/www.linuxmi.com$ cat linuxmi.com.txt | sed -f linuxmi.sed
讓我們看看這是怎么做的。你可能已經(jīng)注意到我們這里沒(méi)有使用 echo。我們使用 cat。這是因?yàn)?cat 會(huì)打印文件的全部?jī)?nèi)容,而 echo 只會(huì)打印文件名。您可能還注意到,我們使用“-f”標(biāo)志運(yùn)行 sed。這告訴它將腳本作為文件打開(kāi)。
最終結(jié)果是這樣的:38adde92-6a13-11ed-8abf-dac502259ad0.png還值得注意的是 sed 支持正則表達(dá)式 (REGEX)。這些允許您使用特殊而復(fù)雜的語(yǔ)法在文本中定義模式。這是一個(gè)如何工作的示例。我們將采用上述歌詞,但使用正則表達(dá)式打印出每行不以“Take”開(kāi)頭的行。

		
			
linuxmi@linuxmi:~/www.linuxmi.com$ cat linuxmi.com.txt | sed /^Take/d

		38d81bda-6a13-11ed-8abf-dac502259ad0.png當(dāng)然,sed 非常有用。而且與 awk 結(jié)合使用時(shí)會(huì)更加強(qiáng)大。

什么是 AWK?

AWK 與 sed 一樣,是一種處理大量文本的編程語(yǔ)言。但是,雖然人們使用 sed 來(lái)處理和修改文本,但人們大多使用 AWK 作為分析和報(bào)告的工具。與 sed 一樣,AWK 最初是在 1970 年代在貝爾實(shí)驗(yàn)室開(kāi)發(fā)的。它的名字并非來(lái)自程序所做的事情,而是來(lái)自每個(gè)作者的姓氏:Alfred Aho、Peter Weinberger 和 Brian Kernighan??偠灾?,AWK 指的是編程語(yǔ)言本身。在小寫中,awk 指的是命令行工具。AWK 通過(guò)一次讀取一行文本文件或輸入流來(lái)工作。掃描每一行以查看它是否與預(yù)定義的模式匹配。如果找到匹配項(xiàng),則執(zhí)行操作。但是雖然 sed 和 AWK 可能有相似的目的,但它們是兩種完全不同的語(yǔ)言,具有兩種完全不同的設(shè)計(jì)理念。AWK 更類似于一些通用語(yǔ)言,如 C、Python 和 Bash。它具有諸如函數(shù)之類的東西以及更類似于 C 的方法來(lái)處理諸如迭代和變量之類的東西。簡(jiǎn)而言之,AWK 感覺(jué)更像是一種編程語(yǔ)言。所以,讓我們嘗試一下。使用“Take On Me”的歌詞,我們將打印所有超過(guò) 20 個(gè)字符的行。

		
			
linuxmi@linuxmi:~/www.linuxmi.com$ awk ' length($0) > 20 ' linuxmi.com.txt

		38fe5f52-6a13-11ed-8abf-dac502259ad0.png

結(jié)合兩者

awk 和 sed 結(jié)合起來(lái)都非常強(qiáng)大。您可以通過(guò)使用 Unix 管道來(lái)做到這一點(diǎn)。讓我們?cè)囋囘@個(gè):我們將使用 awk 列出“Take On Me”中超過(guò) 20 個(gè)字符的所有行。然后,我們將刪除所有以“Take”開(kāi)頭的行??傊?,這一切看起來(lái)像這樣:

		linuxmi@linuxmi:~/www.linuxmi.com$ awk 'length($0)>20' linuxmi.com.txt | sed /^Take/d輸出如下:392962d8-6a13-11ed-8abf-dac502259ad0.png

sed 和 awk 的力量

在這篇文章中我們就解釋這么多,但希望您現(xiàn)在對(duì) sed 和 awk 的強(qiáng)大功能有所了解。簡(jiǎn)而言之,它們是一個(gè)文本處理引擎。那么,你為什么要關(guān)心呢?除了您永遠(yuǎn)不知道何時(shí)需要對(duì)文本文檔進(jìn)行可預(yù)測(cè)的重復(fù)更改這一事實(shí)之外,sed 和 awk 非常適合解析日志文件。當(dāng)您嘗試調(diào)試 LAMP 服務(wù)器中的問(wèn)題或查看訪問(wèn)日志以查看您的服務(wù)器是否被黑客入侵時(shí),這特別方便。


審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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

    文章

    11509

    瀏覽量

    213715
  • 編程語(yǔ)言
    +關(guān)注

    關(guān)注

    10

    文章

    1956

    瀏覽量

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

    關(guān)注

    0

    文章

    26

    瀏覽量

    27332

原文標(biāo)題:為什么說(shuō)每個(gè) Linux 極客都需要了解 Sed 和 Awk

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Linux OpenSSL介紹

    了解openssl之前,我們首先要了解SSLTLS是什么。
    的頭像 發(fā)表于 06-26 14:12 ?184次閱讀
    <b class='flag-5'>Linux</b> OpenSSL介紹

    ??sed命令從入門到實(shí)戰(zhàn)

    sed是一種流編輯器,能高效地完成各種替換、刪除、插入等操作,按照文件數(shù)據(jù)行順序,重復(fù)處理滿足條件的每一行數(shù)據(jù),然后把結(jié)果展示打印,且不會(huì)改變?cè)募?nèi)容。
    的頭像 發(fā)表于 06-18 15:59 ?425次閱讀

    AWK6943ABTER:車規(guī)級(jí)高可靠電源解決方案

    ?AWK6943ABTER以車規(guī)級(jí)可靠性+簡(jiǎn)設(shè)計(jì)成為工業(yè)/汽車電源首選,其寬壓輸入、納米級(jí)響應(yīng)及打嗝式保護(hù)技術(shù),為高可靠系統(tǒng)提供國(guó)產(chǎn)化高性能替代方案。
    的頭像 發(fā)表于 06-16 17:12 ?444次閱讀
    <b class='flag-5'>AWK</b>6943ABTER:車規(guī)級(jí)高可靠電源解決方案

    AWK6943:MP9943 的高效兼容替代方案及技術(shù)優(yōu)勢(shì)

    AWK6943 對(duì) MP9943 的替換不僅是引腳與功能的簡(jiǎn)單兼容,更是性能與可靠性的全面升級(jí)。更低的功耗、更高的效率、汽車級(jí)認(rèn)證及靈活的配置特性,使其在消費(fèi)電子、工業(yè)控制、車載系統(tǒng)等場(chǎng)景中更具優(yōu)勢(shì)。對(duì)于需要優(yōu)化續(xù)航、提升穩(wěn)定性或拓展應(yīng)用場(chǎng)景的設(shè)計(jì),
    的頭像 發(fā)表于 06-12 13:51 ?297次閱讀

    Linux中文本處理命令的用法

    Linux 三劍客是(grep,sed,awk)三者的簡(jiǎn)稱,熟練使用這三個(gè)工具可以提升運(yùn)維效率。Linux 三劍客以正則表達(dá)式作為基礎(chǔ),而在Linu
    的頭像 發(fā)表于 04-15 10:22 ?280次閱讀
    <b class='flag-5'>Linux</b>中文本處理命令的用法

    步進(jìn)電機(jī)選型時(shí)必須要了解什么?

    步進(jìn)電機(jī)選型時(shí),必須要了解以下幾個(gè)方面的信息以確保所選電機(jī)能夠滿足特定的應(yīng)用需求: 1. 轉(zhuǎn)矩需求: ? ?● 步進(jìn)電機(jī)的保持轉(zhuǎn)矩類似于傳統(tǒng)電機(jī)的“功率”,但物理結(jié)構(gòu)和輸出特性有所不同
    的頭像 發(fā)表于 04-14 07:38 ?372次閱讀

    AWK工具介紹

    awk是什么 awk是一個(gè)強(qiáng)大的linux命令,有強(qiáng)大的文本格式化的能力,好比將一些文本數(shù)據(jù)格式化成專業(yè)的excel表的樣式。 awk早期在Unix上實(shí)現(xiàn),我們用的
    的頭像 發(fā)表于 12-17 11:21 ?530次閱讀
    <b class='flag-5'>AWK</b>工具介紹

    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
    的頭像 發(fā)表于 12-16 15:58 ?722次閱讀
    <b class='flag-5'>Linux</b>三劍客之<b class='flag-5'>Sed</b>:文本處理神器

    飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之內(nèi)核簡(jiǎn)介

    學(xué)到本章節(jié),大家應(yīng)該對(duì)Linux操作系統(tǒng)都有了一定的了解,但可能還不知道我們拿到手的內(nèi)核源碼都經(jīng)歷了什么。linux有一個(gè)龐大的開(kāi)源社區(qū),每個(gè)人都可以向開(kāi)源社區(qū)提交代碼。由于
    發(fā)表于 12-13 09:03

    如何掌握Linux文本處理

    目錄 sed用法 模式空間與保持空間 sed命令選項(xiàng) sed命令的基本語(yǔ)法 sed命令選項(xiàng) 基礎(chǔ)sed命令 高階
    的頭像 發(fā)表于 11-10 13:40 ?497次閱讀

    管橋式整流電路需要什么二

    管橋式整流電路需要 四個(gè)整流二管 。這些二管通常被連接成一個(gè)橋型結(jié)構(gòu),以實(shí)現(xiàn)交流電到直流電的轉(zhuǎn)換。在橋式整流電路中,每個(gè)
    的頭像 發(fā)表于 10-09 11:43 ?1500次閱讀

    linux驅(qū)動(dòng)程序如何加載進(jìn)內(nèi)核

    ,需要了解Linux內(nèi)核的基本概念和API。以下是一些關(guān)鍵概念: 1.1 內(nèi)核模塊:Linux內(nèi)核模塊是一種動(dòng)態(tài)加載和卸載的代碼,可以在不重新啟動(dòng)系統(tǒng)的情況下加載和卸載。驅(qū)動(dòng)程序通常以內(nèi)核模塊的形式實(shí)現(xiàn)。 1.2 設(shè)備模型:
    的頭像 發(fā)表于 08-30 15:02 ?1097次閱讀

    USB 3.2雙通道操作:您需要了解的內(nèi)容

    電子發(fā)燒友網(wǎng)站提供《USB 3.2雙通道操作:您需要了解的內(nèi)容.pdf》資料免費(fèi)下載
    發(fā)表于 08-30 10:09 ?0次下載
    USB 3.2雙通道操作:您<b class='flag-5'>需要了解</b>的內(nèi)容

    要了解下大模型知識(shí)

    工作需要,想要了解一下大模型算力建設(shè)知識(shí)。
    發(fā)表于 08-20 15:31

    不只是前端,后端、產(chǎn)品和測(cè)試也需要了解的瀏覽器知識(shí)(二)

    繼上篇《 不只是前端,后端、產(chǎn)品和測(cè)試也需要了解的瀏覽器知識(shí)(一)》介紹了瀏覽器的基本情況、發(fā)展歷史以及市場(chǎng)占有率。 本篇文章將介紹瀏覽器基本原理。 在掌握基本原理后,通過(guò)技術(shù)深入,在研發(fā)
    的頭像 發(fā)表于 08-12 14:32 ?661次閱讀
    不只是前端,后端、產(chǎn)品和測(cè)試也<b class='flag-5'>需要了解</b>的瀏覽器知識(shí)(二)