Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell Wget页面标题_Shell_Wget - Fatal编程技术网

Shell Wget页面标题

Shell Wget页面标题,shell,wget,Shell,Wget,可以从命令行设置页面标题吗 输入: $ wget http://bit.ly/rQyhG5 <<code>> 输出: If it’s broke, fix it right - Keeping it Real Estate. Home 此脚本将为您提供所需的: wget --quiet -O - http://bit.ly/rQyhG5 \ | sed -n -e 's!.*<title>\(.*\)</title>.*!\1!p'

可以从命令行设置页面标题吗

输入:

$ wget http://bit.ly/rQyhG5 <<code>>
输出:

If it’s broke, fix it right   - Keeping it Real Estate. Home

此脚本将为您提供所需的:

wget --quiet -O - http://bit.ly/rQyhG5 \
  | sed -n -e 's!.*<title>\(.*\)</title>.*!\1!p'
更新

正如注释中所解释的,上面最后一个sed使用了
T
命令,它是GNU扩展。如果没有兼容版本,可以使用:

wget --quiet -O - http://bit.ly/rQyhG5 \
  | sed -n -e 'H;${x;s!.*<head[^>]*>\(.*\)</head>.*!\1!;tnext;b;:next;s!.*<title>\(.*\)</title>.*!\1!p}'
wget--quiet-O-http://bit.ly/rQyhG5 \
|sed-n-e'H${x;s!*]*>\(.*\).!\1!t下一步;b;:下一步;s!*\(.*\).!\1!p}'
更新2

如上所述,在Mac上仍不工作,请尝试:

wget --quiet -O - http://bit.ly/rQyhG5 \
  | sed -n -e 'H;${x;s!.*<head[^>]*>\(.*\)</head>.*!\1!;tnext};b;:next;s!.*<title>\(.*\)</title>.*!\1!p'
wget--quiet-O-http://bit.ly/rQyhG5 \
|sed-n-e'H${x;s!.*]*>\(.*\).!\1!;tnext};b、 :下一个s*\(.*\).*!\1.p'
和/或

cat << EOF > script
H
\$x
\$s!.*<head[^>]*>\(.*\)</head>.*!\1!
\$tnext
b
:next
s!.*<title>\(.*\)</title>.*!\1!p
EOF
wget --quiet -O - http://bit.ly/rQyhG5 \
  | sed -n -f script
cat脚本
H
\$x
\$s!。*]*>\(.*\).*!\1.
\$tnext
B
:下一个
s*\(.*\).*!\1.P
EOF
wget——安静-O-http://bit.ly/rQyhG5 \
|sed-n-f脚本
(注意
\
前面的
$
以避免变量扩展。)


很明显,
:next
不喜欢以
$
作为前缀,这在某些sed版本中可能是一个问题。

以下内容将拉取lynx认为页面标题是什么,将您从所有无意义的正则表达式中解救出来。假设您正在检索的页面符合lynx的标准,则不应中断

lynx -dump example.com | sed '2q;d'

您需要解析检索到的html并提取html标题的文本内容。为了理智起见,不要尝试使用正则表达式。哇,太棒了!但我尝试了最后一种解决方案,得到了:
sed:1:“H;${x;s!*]*>\(…”:无效的命令代码T
是一个错误。
T
是sed的GNU扩展。您可能正在Linux以外的其他系统上运行脚本。在这种情况下,您可以通过“;tnext;b;:next;”更改
;T;
。我将更新答案。另一个错误:
sed:2:“H;${x;s!。*]*>\(…”:意外的EOF(待定的)
运行OSX,但我在这台机器上酿制了gnu sed,这太令人惊讶了。你确定:它在cygwin上对我很好。也许你错过了sed命令末尾的最后一个
。在另一台笔记本电脑上运行它,运行OSX 10.7.3(Lion),而不是OSX 10.6.9(Snow Leopard)…使用sed而不是sed,你的编辑仍然失败,jfgage,我不太清楚为什么?也许这是mac的东西,或者是赢家的东西…无论哪种方式,如果你使用sed而不是sed,原始版本会很糟糕。解决了!
wget --quiet -O - http://bit.ly/rQyhG5 \
  | sed -n -e 'H;${x;s!.*<head[^>]*>\(.*\)</head>.*!\1!;T;s!.*<title>\(.*\)</title>.*!\1!p}'
wget --quiet -O - http://bit.ly/rQyhG5 \
  | sed -n -e 'H;${x;s!.*<head[^>]*>\(.*\)</head>.*!\1!;tnext;b;:next;s!.*<title>\(.*\)</title>.*!\1!p}'
wget --quiet -O - http://bit.ly/rQyhG5 \
  | sed -n -e 'H;${x;s!.*<head[^>]*>\(.*\)</head>.*!\1!;tnext};b;:next;s!.*<title>\(.*\)</title>.*!\1!p'
cat << EOF > script
H
\$x
\$s!.*<head[^>]*>\(.*\)</head>.*!\1!
\$tnext
b
:next
s!.*<title>\(.*\)</title>.*!\1!p
EOF
wget --quiet -O - http://bit.ly/rQyhG5 \
  | sed -n -f script
lynx -dump example.com | sed '2q;d'