日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

對話 UNIX,第 9 部分: 正則表達(dá)式

非常奇怪,直到今天我仍然能重復(fù)周六早上的經(jīng)典歌曲“Conjunction Junction 。這是好事(看了太多電視)還是壞事(也許是我現(xiàn)在職業(yè)的先兆)仍然有待討論 。不管怎樣,這首小調(diào)在歡快的節(jié)奏下傳遞了基本的信息 。
我還沒有為學(xué)習(xí) Unix 構(gòu)想出與“Conjunction Junction相似的作品,但是我會在未來的幾個(gè)月里嘗試親手編寫這樣的歌曲 。與此同時(shí),趁著快樂回憶所帶來的好心情,我們繼續(xù)以 Schoolhouse 搖滾的傳統(tǒng)學(xué)習(xí)方式攻克命令行 。
現(xiàn)在開始上課 。吐出嘴里的口香糖,回到您的座位上,然后拿出一根二號鉛筆 。還有您,Spicoli 。
模仿秀
您可以將 UNIX 命令行看作是一句話:
可執(zhí)行命令,如 cat 或 ls,是動詞——操作 。
命令的輸出是名詞——要查閱或使用的數(shù)據(jù) 。
Shell 操作符,如 |(管道)或 >(重定向標(biāo)準(zhǔn)輸出),是連詞——用于連接句子 。
例如,命令行:ls -A | wc -l 用于計(jì)算當(dāng)前目錄下的條目數(shù)(忽略特殊條目 . 和 ..),它包含兩個(gè)句子 。第一個(gè)句子 ls -A 是動詞結(jié)構(gòu),列舉當(dāng)前目錄下的內(nèi)容,第二個(gè)句子 wc -l 是另一個(gè)動詞結(jié)構(gòu),用于計(jì)算行數(shù) 。第一個(gè)句子輸出的結(jié)果作為第二個(gè)句子的輸入,并由連接詞(管道)連接這兩個(gè)句子 。
在本系列文章以及其他文章中展示的許多您可能已經(jīng)學(xué)習(xí)過的命令行句式都具有這種句子結(jié)構(gòu) 。
但是,如果缺少了文法上的修飾語,命令行將顯得不專業(yè) 。當(dāng)然,基本句子也能完成工作,但是這樣顯得不優(yōu)美 。(在此對高中英語演唱二人組 Rad 女士和 Perlstein 女士表示歉意 。)解決更有趣的問題需要用到形容詞 。
幾乎所有重要問題都需要從無用數(shù)據(jù)中過濾出有用數(shù)據(jù) 。雖然屬性的數(shù)量和種類會有所不同,但是每種方案都通過某種方式(形式或格式),隱式或顯式地描述了它要查找并處理的信息,從而生成另外一種形式的其他信息 。
在命令行中,正則表達(dá)式 的作用相當(dāng)于形容詞——一種描述或限定詞 。在應(yīng)用到輸出時(shí),正則表達(dá)式可辨別相關(guān)數(shù)據(jù)和無關(guān)數(shù)據(jù) 。
標(biāo)點(diǎn)概述
讓我們看一個(gè)示例問題 。
grep 實(shí)用工具逐行過濾輸入并尋找匹配 。grep 的最簡單應(yīng)用是打印那些包含與某個(gè)模式匹配的文本的行 。grep 可以查找具有固定順序的字符組合,甚至可以通過使用 -i 選項(xiàng)來忽略大小寫 。
因此,假定文件 heroes.txt 包含以下行:
Catwoman
Batman
The Tick
Spider Man
Black Cat
Batgirl
Danger Girl
Wonder Woman
Luke Cage
The Punisher
Ant Man
Dead Girl
Aquaman
SCUD
Spider Woman
Blackbolt
Martian Manhunter
命令行:
grep -i man heroes.txt
將生成:
Catwoman
Batman
Spider Man
Wonder Woman
Ant Man
Aquaman
Martian Manhunter
其中 grep 掃描 heroes.txt 文件中的每一行并查找字母 m,后面緊跟 a,然后緊跟 n 。除了必須保證相鄰,這些字母可以出現(xiàn)在行的任何位置,甚至可以位于較大的單詞中間 。在不考慮大小寫的情況下(-i 選項(xiàng)),Catwoman、Batman、Spider Man、Wonder Woman、Ant Man、Aquaman 和 Martian Manhunter 都包含字符串 man 。
【對話 UNIX,第 9 部分: 正則表達(dá)式】grep 實(shí)用工具包含其他可優(yōu)化搜索的內(nèi)置選項(xiàng) 。例如,-w 選項(xiàng)限制于匹配整個(gè)單詞,因此 grep -i -w man 將排除 Catwoman 和 Batman(舉例來說) 。
該工具還有一個(gè)優(yōu)秀的功能,可以排除而不是包括所有匹配的搜索結(jié)果 。使用 -v 選項(xiàng)來排除 匹配的行 。例如:
grep -v -i 'spider' heroes.txt
將打印除了包含字符串 spider 之外的所有行 。

推薦閱讀