grep extract简单的url - 没有方案

时间:2014-09-19 10:39:34

标签: regex grep sh

我需要从文件中提取n个url。我开始时:

grep -E -o 'ftp://\S*' $filename

我知道,这个特殊的网址将以ftp方案开头,并以一些白色字符(空格或换行符)结束。

我收到的内容如下:

  

的ftp:/dir/some_file.ext

但我只需要一个路径(/dir/some_file.ext)。没有方案(ftp:// part)

我可以使用第一个正则表达式吗?我必须使用第二个吗?

我不能使用其他任何东西,然后grep / egrep。

2 个答案:

答案 0 :(得分:1)

如果您的grep支持-P(PCRE标志),那么您可以使用:

grep -oP 'ftp:/\K/\S*' $filename
/dir/some_file.ext

如果出于某种原因,您没有grep -P可用,那么请管道另外grep

grep -oE 'ftp://\S*' file | grep -oE '/[^/].*'
/dir/some_file.ext

答案 1 :(得分:1)

gnu awk(由于记录选择器中的多个字符)也可能:

awk -v RS="ftp:/" 'NR>1 {print $1}' file