日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
sed和AWK對(duì)Linux的重要性

sed是一個(gè)很好的文件處理工具,本身是一個(gè)管道命令,主要是以行為單位進(jìn)行處理,可以將數(shù)據(jù)行進(jìn)行替換、刪除、新增、選取等特定工作。

成都創(chuàng)新互聯(lián)公司專注于企業(yè)網(wǎng)絡(luò)營(yíng)銷推廣、網(wǎng)站重做改版、海原網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為海原等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

什么是sed?

sed 由傳奇的計(jì)算先驅(qū) Lee E. McMahon 于 1971 年在貝爾實(shí)驗(yàn)室開發(fā)。

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

sed 的工作方式很簡(jiǎn)單:它將文本逐行讀取到緩沖區(qū)中。對(duì)于每一行,它將在適用的情況下執(zhí)行預(yù)定義的指令。

例如,如果有人要編寫一個(gè) sed 腳本,將單詞“beer”替換為“soda”,然后傳入一個(gè)包含“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/

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

首先,將歌曲的歌詞放入名為linuxmi.com.txt的文本文件中。然后打開文本編輯器,并添加以下行。確保您創(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í)來演示如何將 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)注意到我們這里沒有使用 echo。我們使用 cat。這是因?yàn)?cat 會(huì)打印文件的全部?jī)?nèi)容,而 echo 只會(huì)打印文件名。您可能還注意到,我們使用“-f”標(biāo)志運(yùn)行 sed。這告訴它將腳本作為文件打開。

最終結(jié)果是這樣的:

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

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

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

當(dāng)然,sed 非常有用。而且與 awk 結(jié)合使用時(shí)會(huì)更加強(qiáng)大。

什么是 AWK?

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

與 sed 一樣,AWK 最初是在 1970 年代在貝爾實(shí)驗(yàn)室開發(fā)的。它的名字并非來自程序所做的事情,而是來自每個(gè)作者的姓氏:Alfred Aho、Peter Weinberger 和 Brian Kernighan??偠灾珹WK 指的是編程語言本身。在小寫中,awk 指的是命令行工具。

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

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

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

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

結(jié)合兩者

awk 和 sed 結(jié)合起來都非常強(qiáng)大。您可以通過使用 Unix 管道來做到這一點(diǎn)。

讓我們?cè)囋囘@個(gè):我們將使用 awk 列出“Take On Me”中超過 20 個(gè)字符的所有行。然后,我們將刪除所有以“Take”開頭的行??傊?,這一切看起來像這樣:

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

輸出如下:

sed 和 awk 的力量

在這篇文章中我們就解釋這么多,但希望您現(xiàn)在對(duì) sed 和 awk 的強(qiáng)大功能有所了解。簡(jiǎn)而言之,它們是一個(gè)文本處理引擎。


新聞標(biāo)題:sed和AWK對(duì)Linux的重要性
標(biāo)題URL:http://www.5511xx.com/article/ccogedo.html