2014-01-26 114 views
0

首先,有沒有比使用sed和awk更好的命令行Linux處理文本的方法,它可以從使用wget下載的HTML頁面處理文本?如果是這樣,請告訴我或鏈接到文檔。瞭解sed/awk ^和[]

其次,我感到困惑的下面的表達式......因爲來自新生產線的開始^搜索,爲什麼空白gsub(/[^a-z]]*/, " ")替代非字母字符,又是什麼逗號,在這裏做?爲什麼在這個表達式中有一個無與倫比的]

+1

「處理文本」是一個非常模糊的描述。您想做什麼? –

+0

'[^ notthesecharacters]' –

回答

4

對於HTML的處理,您需要描述您想要處理的內容。

^字符當它不在字符類中時可用作'行首',並且可以指示行的開始(例如,如果正則表達式爲/^[^a-z]/)。當它位於一個字符類(用方括號括起來,[])內並且是第一個字符時,它是一個元字符,意思是「除下列字符以外的任何字符」。

gsub函數是一個全局搜索和替換操作:

gsub(/[^a-z]]*/, " ") 

的意思是「代替什麼,是不是在AZ和後跟零個或多個接近方括號空白(中雙引號字符串" ")。逗號是一個參數分隔符,將正則表達式參數與替換字符串參數分開。正則表達式中的第二個方括號是令人驚訝的;這很可能是一個錯誤。

因爲gsub函數沒有第三個參數,所以它在當前輸入行$0上運行。

+0

謝謝喬納森,逗號是幹什麼的? – p1nesap

+0

它將正則表達式參數從替換字符串參數中分離爲'gsub'函數和'gsub'函數 - 這是一個非常標準的逗號角色。沒有第三個參數的'gsub'命令操作'$ 0',它是當前的輸入行。 –

+0

那麼爲什麼不只是/「」? – p1nesap