首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从文件中删除URL的sed

从文件中删除URL的sed
EN

Stack Overflow用户
提问于 2010-11-26 07:41:26
回答 2查看 12.1K关注 0票数 14

我正在尝试编写一个sed表达式,该表达式可以从文件中删除urls。

示例

代码语言:javascript
复制
http://samgovephotography.blogspot.com/ updated my blog just a little bit ago. Take a chance to check out my latest work. Hope all is well:)   

Meet Former Child Star & Author Melissa Gilbert 6/15/09 at LA's B&N https://hollywoodmomblog.com/?p=2442 Thx to HMB Contributor @kdpartak :)   

但我不明白:

代码语言:javascript
复制
sed 's/[\w \W \s]*http[s]*:\/\/\([\w \W]\)\+[\w \W \s]*/ /g' posFile  

固定!

处理几乎所有的情况,甚至是格式错误的URL。

代码语言:javascript
复制
sed 's/[\w \W \s]*http[s]*[a-zA-Z0-9 : \. \/ ; % " \W]*/ /g' positiveTweets | grep "http" | more
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-26 09:33:35

下面将删除http://https://以及所有内容,直到下一个空格为止:

代码语言:javascript
复制
sed -e 's!http\(s\)\{0,1\}://[^[:space:]]*!!g' posFile  
 updated my blog just a little bit ago. Take a chance to check out my latest work. Hope all is well:)   

Meet Former Child Star & Author Melissa Gilbert 6/15/09 at LA's B&N  Thx to HMB Contributor @kdpartak :)

编辑:

我应该用:

代码语言:javascript
复制
sed -e 's!http[s]\?://\S*!!g' posFile

与"[s]\?“相比,”s“是一种更易读的书写”可选s“的方法。

"\S*“是比"[^[:space:]]*”更易读的“任何非空格字符”的版本。

当我写这个答案时,我肯定是在使用我的Mac安装的sed (brew install gnu-sed FTW)。

有更好的URL正则表达式(例如,考虑到HTTP(S)以外的方案),但给出的示例将对您有效。为什么要把事情复杂化?

票数 14
EN

Stack Overflow用户

发布于 2017-12-14 20:48:13

接受的答案提供了我用来从文件中删除URL等的方法。然而,它留下了“空白行”。这里有一个解决办法。

代码语言:javascript
复制
sed -i -e 's/http[s]\?:\/\/\S*//g ; s/www\.\S*//g ; s/ftp:\S*//g' input_file

perl -i -pe 's/^'`echo "\012"`'${2,}//g' input_file

GNU标志,使用的表达式如下:

代码语言:javascript
复制
-i    Edit in-place
-e    [-e script] --expression=script : basically, add the commands in script
      (expression) to the set of commands to be run while processing the input
 ^    Match start of line
 $    Match end of line


 ?    Match one or more of preceding regular expression
{2,}  Match 2 or more of preceding regular expression
\S*   Any non-space character; alternative to: [^[:space:]]*

然而,

代码语言:javascript
复制
sed -i -e 's/http[s]\?:\/\/\S*//g ; s/www\.\S*//g ; s/ftp:\S*//g'

离开非打印字符,大概是\n (换行符)。标准sed-based方法删除“空白”行、制表符和空格。

代码语言:javascript
复制
sed -i 's/^[ \t]*//; s/[ \t]*$//'

不要工作,在这里:如果不使用“分支标签”来处理换行符,则不能使用sed (每次读取输入一行)替换它们。

解决方案是使用以下perl表达式:

代码语言:javascript
复制
perl -i -pe 's/^'`echo "\012"`'${2,}//g'

它使用shell替换,

  • '`echo "\012"`'

替换八进制值

  • \012

(即换行符\n),发生2次或更多次,

  • {2,}

(否则,我们将展开所有行),使用其他内容;在这里:

  • //

也就是说,什么都没有。

下面的第二个引用提供了这些值的精彩表!

所使用的perl标志是:

代码语言:javascript
复制
-p  Places a printing loop around your command,
    so that it acts on each line of standard input

-i  Edit in-place

-e  Allows you to provide the program as an argument,
    rather than in a file

参考文献:

Perl flags -pe, -pi, -p, -w, -d, -i, -t?

示例:

代码语言:javascript
复制
$ cat url_test_input.txt

Some text ...
https://stackoverflow.com/questions/4283344/sed-to-remove-urls-from-a-file
https://www.google.ca/search?dcr=0&ei=QCsyWtbYF43YjwPpzKyQAQ&q=python+remove++citations&oq=python+remove++citations&gs_l=psy-ab.3...1806.1806.0.2004.1.1.0.0.0.0.61.61.1.1.0....0...1c.1.64.psy-ab..0.0.0....0.-cxpNc6youY
http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html
https://bbengfort.github.io/tutorials/2016/05/19/text-classification-nltk-sckit-learn.html
http://datasynce.org/2017/05/sentiment-analysis-on-python-through-textblob/
https://www.google.ca/?q=halifax&gws_rd=cr&dcr=0&ei=j7UyWuGKM47SjwOq-ojgCw
http://www.google.ca/?q=halifax&gws_rd=cr&dcr=0&ei=j7UyWuGKM47SjwOq-ojgCw
www.google.ca/?q=halifax&gws_rd=cr&dcr=0&ei=j7UyWuGKM47SjwOq-ojgCw
ftp://ftp.ncbi.nlm.nih.gov/
ftp://ftp.ncbi.nlm.nih.gov/1000genomes/ftp/alignment_indices/20100804.alignment.index
Some more text.

$ sed -e 's/http[s]\?:\/\/\S*//g ; s/www\.\S*//g ; s/ftp:\S*//g' url_test_input.txt > a

$ cat a

Some text ...










Some more text.

$ perl -i -pe 's/^'`echo "\012"`'${2,}//g' a

Some text ...
Some more text.

$ 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4283344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档