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

通用線(xiàn)程--sed 實(shí)例,第1部分( 三 )


$ sed -n -e "/BEGIN/,/END/p" /my/test/file | more如果沒(méi)發(fā)現(xiàn) "BEGIN",那么將不打印數(shù)據(jù) 。如果發(fā)現(xiàn)了 "BEGIN",但是在這之后的所有行中都沒(méi)發(fā)現(xiàn) "END",那么將打印所有后續(xù)行 。發(fā)生這種情況是因?yàn)?sed 面向流的特性 -- 它不知道是否會(huì)出現(xiàn) "END" 。C 源代碼示例
如果只要打印 C 源文件中的 main() 函數(shù),可輸入:
$ sed -n -e "/main[[:space:]]*(/,/^}/p" sourcefile.c | more該命令有兩個(gè)規(guī)則表達(dá)式 "/main[[:space:]]*(/" 和 "/^}/",以及一個(gè)命令 "p" 。第一個(gè)規(guī)則表達(dá)式將與后面依次跟有任意數(shù)量的空格或制表鍵以及開(kāi)始圓括號(hào)的字符串 "main" 匹配 。這應(yīng)該與一般 ANSI C main() 聲明的開(kāi)始匹配 。在這個(gè)特別的規(guī)則表達(dá)式中,出現(xiàn)了 "[[:space:]]" 字符類(lèi) 。這只是一個(gè)特殊的關(guān)鍵字,它告訴 sed 與 TAB 或空格匹配 。如果愿意的話(huà),可以不輸入 "[[:space:]]",而輸入 "[",然后是空格字母,然后是 -V,然后再輸入制表鍵字母和 "]" -- Control-V 告訴 bash 要插入“真正”的制表鍵,而不是執(zhí)行命令擴(kuò)展 。使用 "[[:space:]]" 命令類(lèi)(特別是在腳本中)會(huì)更清楚 。好,現(xiàn)在看一下第二個(gè) regexp 。"/^}" 將與任何出現(xiàn)在新行行首的 "}" 字符匹配 。如果代碼的格式很好,那么這將與 main() 函數(shù)的結(jié)束花括號(hào)匹配 。如果格式不好,則不會(huì)正確匹配 -- 這是執(zhí)行模式匹配任務(wù)的一件棘手之事 。因?yàn)槭翘幱?"-n" 安靜方式,所以 "p" 命令還是完成其慣有任務(wù),即明確告訴 sed 打印該行 。試著對(duì) C 源文件運(yùn)行該命令 -- 它應(yīng)該輸出整個(gè) main() { } 塊,包括開(kāi)始的 "main()" 和結(jié)束的 "}" 。【通用線(xiàn)程--sed 實(shí)例,第1部分】下一篇
既然已經(jīng)觸及了基本知識(shí),我們將在后兩篇文章中加快步伐 。如果想看一些更豐富的 sed 資料,請(qǐng)耐心一些 -- 馬上就有!同時(shí),您可能想查看下列 sed 和規(guī)則表達(dá)式資源 。

推薦閱讀