【问题标题】:grep extract simple url - without schemegrep 提取简单的 url - 没有方案
【发布时间】:2014-11-13 22:28:40
【问题描述】:

我需要从文件中提取 n url。我已经开始了:

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

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

我收到类似的东西:

ftp:/dir/some_file.ext

但我只需要一个路径 (/dir/some_file.ext)。无方案(ftp:// 部分)

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

除了 grep/egrep 之外,我不能使用其他任何东西。

【问题讨论】:

    标签: regex grep sh


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      这个gnu awk(由于记录选择器中有多个字符)也可以这样做:

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

      【讨论】:

        猜你喜欢
        • 2023-03-29
        • 2017-06-18
        • 1970-01-01
        • 1970-01-01
        • 2013-02-23
        • 2010-12-25
        • 1970-01-01
        • 2011-12-25
        • 1970-01-01
        相关资源
        最近更新 更多