2016-03-13 75 views
0

我想過濾一個長的html頁面,只留下具有一致結構的指紋。例如:Sed模式過濾長html文檔

DCD0 5B71 EAB9 4199 527F 44AC DB6B 8C1F 96D8 BF60

我知道如何通過使用STANDRD命令線做它命令作爲grep的,切割和頭部/尾部,但有更優雅的方式來做到這一點與sed?我使用的shell comman很長,看起來不那麼好。

謝謝

回答

2

grep是基於正則表達式匹配從文件中提取字符串的正確工具:

grep -Eo '([A-F0-9]{4}[[:space:]]){9}[A-F0-9]{4}' file.html 
+0

感謝您的! 現在的問題是 - 我試圖將結果分配給變量,但這不適用於我。 是將它保存到某個臨時文件然後逐行讀取的唯一方法? – Student

+0

你不需要一個臨時文件,你可以直接通過管道讀取' – hek2mgl

2

這裏是一個sed命令與GNU sed的測試4.2.2:

sed -nr '/(([[:xdigit:]]){4} ?){10}/p' file 

它匹配並打印

  • 10組即是由
    • 4 hexdigits
    • 跟着一個可選的空間
+0

很好完成,但是當它匹配你描述的內容時,它會_prints_ _full lines_。 – mklement0

+1

@mklement,你是對的,我的測試用例太簡單了。 –

1

隨着GNU sed的:

sed -E 's/.*(([A-F0-9]{4}[[:space:]]){9}[A-F0-9]{4}).*/\1/' file 
+0

錯誤。這是不是得到預期的結果 – Student

+0

你使用哪個操作系統和sed版本? – Cyrus

+0

Cent OS 7. Sed 4.2.2 – Student