如何使用 shell 脚本获取文件的 URL

如何使用 shell 脚本获取文件的 URL

我有一个文件,其中包含网址。我正在尝试使用 shell 脚本从该文件获取 URL。

在该文件中,URL 如下:

('URL', 'http://url.com');

我尝试使用以下内容:

cat file.php | grep 'URL' | awk '{ print $2 }'

其输出结果如下:

'http://url.com');

但我只需要获取url.comshell 脚本中的一个变量。我该如何实现呢?

答案1

你可以用一个简单的方法做所有事情grep

grep -oP "http://\K[^']+" file.php 

man grep

   -P, --perl-regexp
          Interpret  PATTERN  as  a  Perl  regular  expression  (PCRE, see
          below).  This is highly experimental and grep  -P  may  warn  of
          unimplemented features.
   -o, --only-matching
          Print  only  the  matched  (non-empty) parts of a matching line,
          with each such part on a separate output line.

诀窍是使用\K,在 Perl 正则表达式中,表示discard everything matched to the left of the \K。因此,正则表达式会查找以 开头的字符串http://(由于 ,因此会被丢弃\K),后面跟着'尽可能多的非 字符。与 结合使用-o,这意味着只会打印 URL。

您也可以直接在 Perl 中执行此操作:

perl -ne "print if s/.*http:\/\/(.+)\'.*/\$1/" file.php\

答案2

像这样吗?

grep 'URL' file.php | rev | cut -d "'" -f 2 | rev

或者

grep 'URL' file.php | cut -d "'" -f 4 | sed s/'http:\/\/'/''/g

删除 http://。

答案3

尝试这个,

awk -F// '{print $2}' file.php | cut -d "'" -f 1

答案4

如果所有行都包含 URL:

awk -F"'|http://" '{print $5}' file.php 

如果只有部分行包含 URL:

awk -F"'|http://" '/^define/ {print $5}' file.php 

根据其他行,您可能需要更改^define正则表达式

相关内容