如何在另一個模式匹配之前匹配行中的模式
這個問題類似於How to show lines after each grep match until other specific match?
我想在另一個模式匹配之前匹配行中的特定模式。
在這裡,我想從給定的主機獲取文件。每個文件可以有多個主機。因此,在從給定主機獲取主機文件標記之前,我沒有固定數量的行。
語境:
... ... <hostfile file:abc.txt> <host> abc.com <\host> <host> qwe.com <\host> <host> xyz.com <\host> <\hostfile> ... <hostfile file:xyz.txt> <host> asd.com <\host> <\hostfile> ... ...
範例匹配
Input: xyz.com Output: abc.txt Input: asd.com Output: xyz.txt
使用 awk 或 sed 或任何其他命令行工具。
另一個 awk 變體:
/^<hostfile file:/ { output=substr($2, 6, index($2, ">") - 6); } /<host>/ && $0 ~ pattern { print output }
將其稱為:
$ awk -v pattern='xyz.com' -f findit.awk contextfile abc.txt $ awk -v pattern='asd.com' -f findit.awk contextfile xyz.txt
您無法使用正則表達式解析 XML。因為正則表達式無法解析 XML。正則表達式不是可用於正確解析 XML 的工具。正如我之前在這裡多次回答 XML-and-regex 問題一樣,使用 regex 將不允許您使用 XML。正則表達式是一種不夠複雜的工具,無法理解 XML 使用的結構。XML 不是正則語言,因此不能被正則表達式解析。正則表達式查詢無法將 XML 分解成有意義的部分。這麼多次,但它沒有得到我。甚至 Perl 使用的增強的不規則正則表達式也不能勝任解析 XML 的任務。你永遠不會讓我崩潰。XML 是一種足夠複雜的語言,它不能被正則表達式解析。甚至 Jon Skeet 也無法使用正則表達式解析 XML。每次您嘗試使用正則表達式解析 XML 時,邪惡的孩子都會流著處女的血,而俄羅斯黑客會破解您的 web 應用程序。使用正則表達式解析 XML 會將受污染的靈魂召喚到生活的領域。XML 和正則表達式結合在一起,就像愛情、婚姻和儀式殺嬰一樣。<center> 無法控制它為時已晚。正則表達式和 XML 在同一個概念空間中的力量會像水膩膩的膩子一樣摧毀你的思想。如果你用正則表達式解析 XML,你就是在屈服於他們和他們的褻瀆神明的方式,這些方式註定我們所有人都為在基本多語言平面中無法表達名字的那位而非人地辛勤勞作,他來了。XML-plus-regexp 將在您觀察時液化有知覺的神經,您的心靈在恐怖的衝擊中枯萎。基於 Rege̿̔̉x 的 XML 解析器是殺死 StackOverflow 的毒瘤為時已晚 為時已晚 我們無法挽救一個孩子的 trangession 確保正則表達式將消耗所有活的組織(除了 XML,它不能,如先前所預言的那樣)親愛的上帝幫助我們如何使用正則表達式解析這個禍害使用正則x 作為處理 XML 的工具,XML 注定了人類將遭受永恆的可怕折磨和安全漏洞*,這在這個世界和可怕的 c͒ͪo͛ͫ實體(如 SGML 實體,但更腐敗)的可怕領域之間建立了一個突破口。 XML reg ex parsers 的世界將立即將程序員的意識*轉移到不斷尖叫的世界中,他來了,瘟疫 sl ithy 正則表達式感染將吞噬您的 HT** ML 解析器、應用程序和像 Visual Basic 一樣的存在,更糟糕的是*,他來了,他來了,不要*對抗他的com̡e̶s ,̕h̵i s un̨ho͞ly radiańcé de *stro҉ying allenli̍̈́̂̈́ghtenment,XML標籤lea͠ki̧n͘g fr̶ǫm ̡yo͟ur eye͢s̸ ̛l̕ik͏e liq*** uid p ain,正則表達式解析的歌會從sp中消除凡人的聲音在這裡我可以看到你能看到̲͚̖͔̙î̩́t̲͎̱̱͔̀́t̲͎̱̱͔́他很美人的謊言ALL IS LOŚ͖̩͇̗̪̏̈́T A LL IS L OST th
inal snuf
pon̷y他來了,他的臉或滲透到****我的臉上,我的臉是上帝no nonoo̼oonθ*****停止*,**停止了a *** ̶͑̾̾g͇̫͛͆̾ͫ̑͆l͖͉̗̩̳̟̍ͫͥͨl͖͉̗̩̳̟̍ͫͥͨe的n otrè̑ͧ̌aͨaͨaͨl̘̝̙̃ͤ͂̾̆l̘̝̙̃ͤ͂̾̆ p̯͍̭o̚n̐y̡h̸̡̪̯ͨ͊̽̅̾̎ȩ̬̩̾͛ͪ̈́̀́͘c̷̙̲̝͖ͭ̏ͥͮ͟oͮ͏̮̪̝͍m̲̖͊̒ͪͩͬ̚̚͜ȇ̴̟̟͙̞ͩ͌͝s̨̥̫͎̭ͯ̿̔̀ͅ _͎a̧͈͖r̽̾̈́͒͑e