2013-10-31 148 views
1

我在腳本中很新,但我想學習它。 我必須做的是從文本文件中刪除所有類似http:// *的事件。我想用sed命令和正則表達式來完成它。刪除文本文件中的所有超鏈接,linux腳本

以下是我想出了這麼遠:

sed 's/http:\/\/.*/ /' <input.txt> output.txt 

此代碼替換所有超鏈接與空間。但問題是,它也會消除其餘部分。

我該如何解決這個問題?我嘗試添加空格,「http://.*」或單詞「http://.* \>」的末尾或我在互聯網上找到的其他技巧,但它們不起作用。

有沒有更好的方式來做到這一點,而不是使用sed?

回答

0

Sed是一個很好的方法來做到這一點。嘗試改變你的正則表達式爲s!http://[^[:space:]]*! !g

+0

哎呀,謝謝格倫! – glomad

+0

謝謝,它的工作。 但你能告訴我爲什麼s!http:// [^ s] *! !沒有工作(它導致了奇怪的事情)和g是什麼? –

+0

@Nima:sed中的g標誌代表「全局」。它基本上意味着「匹配模式空間中輸入正則表達式的所有實例」。默認情況下,sed只會更改每行上的模式的第一個實例(並且某些版本將替換整個行,就像您的顯然那樣)。添加'g'標誌使得sed將它在行中找到的任何地方都替換掉。 –

相關問題