2013-10-31 108 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将它在行中找到的任何地方都替换掉。 –

相关问题