zoukankan      html  css  js  c++  java
  • CentOS初步学习记录(三)wget文件下载和sed文件处理

    一、wget 工具

    wget命令用来从指定的URL下载文件,wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕,如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载,这对从那些限定了链接时间的服务器上下载大文件非常有用。

    1.1 基本语法

    wget (选项) Url地址 

    1.2 选项

    1)启动参数

    • -V, –version:显示 wget 的版本后退出
    • -h, –help:打印语法帮助
    • -b, –background:启动后转入后台执行
    • -e, –execute=COMMAND:执行 .wgetrc 格式的命令,wgetrc 格式参见 /etc/wgetrc 或 ~/.wgetrc

    2)记录和输入文件参数

    • -o, –output-file=FILE:把记录写到 FILE 文件中
    • -a, –append-output=FILE:把记录追加到 FILE 文件中
    • -d, –debug:打印调试输出
    • -q, –quiet:安静模式(没有输出)
    • -v, –verbose:冗长模式(这是缺省设置)
    • -nv, –non-verbose:关掉冗长模式,但不是安静模式
    • -i, –input-file=FILE:下载在 FILE 文件中出现的 URLs
    • -F, –force-html:把输入文件当作 HTML 格式文件对待
    • -B, –base=URL:将 URL 作为在 -F -i 参数指定的文件中出现的相对链接的前缀
    • –sslcertfile=FILE:可选客户端证书
    • –sslcertkey=KEYFILE:可选客户端证书的 KEYFILE
    • –egd-file=FILE:指定 EGD socket 的文件名

    3)下载参数

    • –bind-address=ADDRESS:指定本地使用地址(主机名或 IP,当本地有多个 IP 或名字时使用)
    • -t, –tries=NUMBER:设定最大尝试链接次数(0 表示无限制)
    • -O –output-document=FILE:把文档写到 FILE 文件中
    • -nc, –no-clobber:不要覆盖存在的文件或使用 .# 前缀
    • -c, –continue:接着下载没下载完的文件
    • –progress=TYPE:设定进程条标记
    • -N, –timestamping:不要重新下载文件除非比本地文件新
    • -S, –server-response:打印服务器的回应
    • –spider:不下载任何东西
    • -T, –timeout=SECONDS:设定响应超时的秒数
    • -w, –wait=SECONDS:两次尝试之间间隔 SECONDS 秒
    • –waitretry=SECONDS:在重新链接之间等待 1…SECONDS 秒
    • –random-wait:在下载之间等待 0…2*WAIT 秒
    • -Y, –proxy=on/off:打开或关闭代理
    • -Q, –quota=NUMBER:设置下载的容量限制
    • –limit-rate=RATE:限定下载输率

    4)目录参数:

    • -nd –no-directories:不创建目录
    • -x, –force-directories:强制创建目录
    • -nH, –no-host-directories:不创建主机目录
    • -P, –directory-prefix=PREFIX:将文件保存到目录 PREFIX/…
    • –cut-dirs=NUMBER:忽略 NUMBER 层远程目录

    5)HTTP 选项参数:

    • –http-user=USER:设定 HTTP 用户名为 USER.
    • –http-passwd=PASS:设定 HTTP 密码为 PASS
    • -C, –cache=on/off:允许/不允许服务器端的数据缓存(一般情况下允许)
    • -E, –html-extension:将所有 text/html 文档以 .html 扩展名保存
    • –ignore-length:忽略 Content-Length 头域
    • –header=STRING:在 Headers 中插入字符串 STRING
    • –proxy-user=USER:设定代理的用户名为 USER

    1.3 实例

    1)使用 wget 下载单个文件

    wget http://www.linuxde.net/testfile.zip

    从网络下载一个文件并保存在当前目录,在下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间)。

    2)下载并以不同的文件名保存

    wget -O wordpress.zip http://www.linuxde.net/download.aspx?id=1080

    wget 默认会以最后一个符合 / 的后面的字符来命令,对于动态链接的下载通常文件名会不正确。

    3)wget 限速下载

    wget --limit-rate=300k http://www.linuxde.net/testfile.zip

    当你执行 wget 的时候,它默认会占用全部可能的宽带下载。但是当你准备下载一个大文件,而你还需要下载其它文件时就有必要限速了。

    4)使用 wget 断点续传

    wget -c http://www.linuxde.net/testfile.zip

    使用 wget -c 重新启动下载中断的文件,对于我们下载大文件时突然由于网络等原因中断非常有帮助,我们可以继续接着下载而不是重新下载一个文件。需要继续中断的下载时可以使用 -c 参数。

    5)使用 wget 后台下载

    wget -b http://www.linuxde.net/testfile.zip
    
    Continuing in background, pid 1840.
    Output will be written to `wget-log'.

    对于下载非常大的文件的时候,我们可以使用参数 -b 进行后台下载,你可以使用以下命令来察看下载进度:

    tail -f wget-log

    6)伪装代理名称下载

    wget --user-agent="Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16" http://www.linuxde.net/testfile.zip

    有些网站能通过根据判断代理名称不是浏览器而拒绝你的下载请求。不过你可以通过 --user-agent 参数伪装。

    7)测试下载链接

    当你打算进行定时下载,你应该在预定时间测试下载链接是否有效。我们可以增加 --spider 参数进行检查

    wget --spider URL

    8)下载多个文件

    wget -i filelist.txt

    首先,保存一份下载链接文件:

    cat > filelist.txt
    url1
    url2
    url3
    url4

    接着使用这个文件和参数 -i 下载。

    二、sed 工具

    Stream Editor文本流编辑,sed是一个“非交互式的”面向字符流的编辑器。能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上。还可以对原文件改动,但是不会再屏幕上返回结果。

    sed命令 可依照 script 的指令,来处理、编辑文本文件。

    主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作。

    2.1 基本语法

    sed 命令格式:

    sed [option] 'sed command' filename

    sed 脚本格式:

    sed [option] -f 'sed script' filename

    2.2 选项

    • -e<script>或--expression=<script>:以选项中的指定的script来处理输入的文本文件
    • -f<script文件>或--file=<script文件>:以选项中指定的script文件来处理输入的文本文件
    • -h或--help:显示帮助
    • -n或--quiet或——silent:仅显示script处理后的结果
    • -V或--version:显示版本信息

    2.3 sed 在文件中查询文本

    1)使用行号

    x x为行号
    x,y 表示行号从x到y
    /pattern 查询包含模式的行
    /pattern /pattern 查询包含两个模式的行
    pattern/,x 在给定行号上查询包含模式的行
    x,/pattern/ 通过行号和模式查询匹配的行
    x,y! 查询不包含指定行号x和y的行
    $ 查询最后一行

    2.4 参考

    《sed命令详解》:https://www.cnblogs.com/ctaixw/p/5860221.html

    三、Shell Script 实例

    有时我们的软件需要用户依赖一些其他软件,如果没有则要自动去下载:

    1. 判断当前目录是否存在 d.zip,如果不存在则从网上下载,并存储为 d.zip
    2. 判断当前目录是否存在 licence 文件,如果不存在则从网上下载(conf.txt),读取第一行,保存为 licence 文件名
    RAR_FILE="http://www.jtthink.com/test/d.rar"
    CONF_FILE="http://www.jtthink.com/test/conf.txt"
    ZIP_FILE="d.zip"
    if [ ! -f $ZIP_FILE ]
      then
        wget -O $ZIP_FILE $RAR_FILE
        echo "d.zip is downloaded"
    fi
    
    if [ ! -f "licence" ]
      then 
       wget $CONF_FILE
       sed -n '1p' conf.txt >licence
       echo "licence created"
    fi
    rm -f conf.txt
    echo "init done"
  • 相关阅读:
    中层人才轮岗,张勇宣布阿里新一轮组织架构调整
    公司倒闭 1 年了,而我当年的项目上了 GitHub 热榜
    为什么别人的行业都那么让人羡慕
    ClickHouse 高级(五)数据一致性(重点)
    ClickHouse 高级(四)优化(4)查询优化
    ClickHouse 高级(二)优化(2)建表优化
    ClickHouse 高级(一)优化(1)Explain 查看执行计划
    ClickHouse基础(八)使用基础(5)ClickHouse 的安装(win10)
    【简单的原创】div简单轮换显示
    BZOJ 5494: [2019省队联测]春节十二响 (左偏树 可并堆)
  • 原文地址:https://www.cnblogs.com/tangxuliang/p/9120971.html
Copyright © 2011-2022 走看看