成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么說每個 Linux 極客都需要了解 Sed 和 Awk

系統 Linux
兩個最被低估的 Linux 實用程序是 sed 和 awk。盡管它們看起來有點神秘,但如果您必須對大段代碼或文本進行重復更改,或者如果您必須分析某些文本,sed 和 awk 是極為有用的。

sed 和 awk 是每個 Linux 高級用戶最喜歡的工具。但它們是什么?以及如何使用它們來處理文本文件?

兩個最被低估的 Linux 實用程序是 sed 和 awk。盡管它們看起來有點神秘,但如果您必須對大段代碼或文本進行重復更改,或者如果您必須分析某些文本,sed 和 awk 是極為有用的。

那么,它們是什么?它們是如何使用的?以及,當它們組合在一起時,它們如何使處理文本變得更容易?

什么是sed?

sed 由傳奇的計算先驅 Lee E. McMahon 于 1971 年在貝爾實驗室開發。

該名稱代表“流編輯器”。sed 允許您通過一種緊湊而簡單但圖靈完備的編程語言以編程方式編輯正文或文本流。

sed 的工作方式很簡單:它將文本逐行讀取到緩沖區中。對于每一行,它將在適用的情況下執行預定義的指令。

例如,如果有人要編寫一個 sed 腳本,將單詞“beer”替換為“soda”,然后傳入一個包含“99 Bottles of Beer on the Wall”完整歌詞的文本文件,它將通過逐行打印該文件,并打印出“99 Bottles of Soda on the Wall”,依此類推。

最基本的 sed 腳本是“Hello World”。在這里,我們使用僅輸出字符串的 echo 命令來打印“Hello World”。但是我們將它傳遞給 sed,并告訴它用“LinuxMi.com”替換“World”。一目了然。

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

如果您需要進行一些更復雜的編輯,您還可以將 sed 指令組合到文件中。讓我們將 A-ha 的“ Take On Me ”的歌詞替換為Greg的“I”、“Me”和“My”的每個實例。

首先,將歌曲的歌詞放入名為linuxmi.com.txt的文本文件中。然后打開文本編輯器,并添加以下行。確保您創建的文件以.sed結尾。

s/I/Greg/
s/Me/Greg/
s/me/Greg/
s/My/Greg/
s/my/Greg/

您可能會注意到上面示例中的重復(例如 s/me/Greg/ 和 s/Me/Greg/)。這是因為 sed 的某些版本,例如 macOS 附帶的版本,不支持不區分大小寫的匹配。因此,我們必須為每個單詞編寫兩條指令,以便 sed 識別大寫和非大寫版本。

這不會完美地工作,就好像您已經手動替換了“I”、“Me”和“My”的每個實例。請記住,我們只是將其用作練習來演示如何將 sed 指令組合到一個腳本中,然后使用單個命令執行它們。

然后,我們需要調用該文件。為此,請運行此命令。

linuxmi@linuxmi:~/www.linuxmi.com$ cat linuxmi.com.txt | sed -f linuxmi.sed

讓我們看看這是怎么做的。你可能已經注意到我們這里沒有使用 echo。我們使用 cat。這是因為 cat 會打印文件的全部內容,而 echo 只會打印文件名。您可能還注意到,我們使用“-f”標志運行 sed。這告訴它將腳本作為文件打開。

最終結果是這樣的:

還值得注意的是 sed 支持正則表達式 (REGEX)。這些允許您使用特殊而復雜的語法在文本中定義模式。

這是一個如何工作的示例。我們將采用上述歌詞,但使用正則表達式打印出每行不以“Take”開頭的行。

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

當然,sed 非常有用。而且與 awk 結合使用時會更加強大。

什么是 AWK?

AWK 與 sed 一樣,是一種處理大量文本的編程語言。但是,雖然人們使用 sed 來處理和修改文本,但人們大多使用 AWK 作為分析和報告的工具。

與 sed 一樣,AWK 最初是在 1970 年代在貝爾實驗室開發的。它的名字并非來自程序所做的事情,而是來自每個作者的姓氏:Alfred Aho、Peter Weinberger 和 Brian Kernighan。總而言之,AWK 指的是編程語言本身。在小寫中,awk 指的是命令行工具。

AWK 通過一次讀取一行文本文件或輸入流來工作。掃描每一行以查看它是否與預定義的模式匹配。如果找到匹配項,則執行操作。

但是雖然 sed 和 AWK 可能有相似的目的,但它們是兩種完全不同的語言,具有兩種完全不同的設計理念。AWK 更類似于一些通用語言,如 C、Python 和 Bash。它具有諸如函數之類的東西以及更類似于 C 的方法來處理諸如迭代和變量之類的東西。簡而言之,AWK 感覺更像是一種編程語言。

所以,讓我們嘗試一下。使用“Take On Me”的歌詞,我們將打印所有超過 20 個字符的行。

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

結合兩者

awk 和 sed 結合起來都非常強大。您可以通過使用 Unix 管道來做到這一點。

讓我們試試這個:我們將使用 awk 列出“Take On Me”中超過 20 個字符的所有行。然后,我們將刪除所有以“Take”開頭的行。總之,這一切看起來像這樣:


linuxmi@linuxmi:~/www.linuxmi.com$ awk 'length($0)>20' linuxmi.com.txt | sed /^Take/d

輸出如下:

sed 和 awk 的力量

在這篇文章中我們就解釋這么多,但希望您現在對 sed 和 awk 的強大功能有所了解。簡而言之,它們是一個文本處理引擎。

那么,你為什么要關心呢?除了您永遠不知道何時需要對文本文檔進行可預測的重復更改這一事實之外,sed 和 awk 非常適合解析日志文件。當您嘗試調試 LAMP 服務器中的問題或查看訪問日志以查看您的服務器是否被黑客入侵時,這特別方便。

責任編輯:龐桂玉 來源: Linux公社
相關推薦

2020-01-14 08:28:50

Linux命令程序

2014-03-07 14:20:30

2018-03-28 14:04:31

2010-04-30 10:05:31

企業級Linux

2022-08-15 06:53:22

網絡攻擊網絡安全

2020-11-17 08:00:00

機器學習管道IT

2022-01-05 11:02:44

物聯網開發物聯網IOT

2019-11-28 15:37:33

云計算技術工具

2022-12-01 10:08:43

預測性維護物聯網

2013-10-11 15:26:32

linux網絡監控

2023-07-11 07:53:51

CSS效果圖像

2019-05-27 23:27:27

2019-03-31 23:16:44

網絡前端協議

2018-11-26 10:04:02

云遷移云供應商數據

2020-04-22 14:41:17

JVM參數函數

2015-10-22 17:20:46

命令工具Linux

2015-10-29 10:26:45

Windows管理員技巧Linux

2015-11-26 09:10:30

2023-04-24 15:41:27

ChatGPT人工智能

2024-11-28 14:57:26

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99久久免费精品视频 | 综合国产在线 | 在线国产视频观看 | 国产精品观看 | 欧美精品一区在线发布 | 免费视频一区二区三区在线观看 | 免费国产成人av | 成人三级视频 | 亚洲国产伊人 | 香蕉久久a毛片 | 欧美一级片在线观看 | 欧美激情精品久久久久久变态 | 亚洲成人在线免费 | 激情久久网 | av在线一区二区 | 久久黄网 | 国产日韩久久 | 精品国产一区二区三区免费 | 日韩av电影在线观看 | 成人高清视频在线观看 | 中文字字幕一区二区三区四区五区 | 成人黄色电影免费 | 国产在线中文字幕 | 91麻豆精品国产91久久久久久久久 | 午夜精品网站 | 欧美激情国产日韩精品一区18 | 日韩av第一页 | 亚洲午夜精品一区二区三区 | 成人毛片视频免费 | 亚洲欧美日韩精品久久亚洲区 | 视频二区国产 | 99热最新网址 | 久久久精品网 | 欧美精品一二区 | 亚洲精品在线观看视频 | 亚洲最新在线视频 | 亚洲一区精品在线 | 99热精品在线 | 青青久草| 国产精品亚洲一区二区三区在线 | 国产亚洲精品久久yy50 |