【问题标题】:How to clean/format awk output?如何清理/格式化 awk 输出?
【发布时间】:2019-09-01 00:19:50
【问题描述】:

试图从ftp://ftp.adobe.com/pub/adobe/reader/mac/AcrobatDC/获取始终位于“misc”后面的最新版本号

我也许可以通过使用“cut”来解决这个问题,但如果时间是 x:xx,它可能不会坚持使用下一个最新版本。

当前代码:

latestver=`/usr/bin/curl -s -L "ftp://ftp.adobe.com/pub/adobe/reader/mac/AcrobatDC/" | /usr/bin/awk '/misc/ {print a}{a=$0}'`
    echo "Latest Version is: $latestver"

输出:

Latest Version is: drwxrwxr-x    2 ftp      ftp           142 Apr 01 11:13 1901020099

预期输出:

Latest Version is: 1901020099

【问题讨论】:

    标签: macos curl awk grep


    【解决方案1】:

    应该这样做:

    latestver=$(curl -s -L "ftp://ftp.adobe.com/pub/adobe/reader/mac/AcrobatDC/" | awk '$NF=="misc" {print f} {f=$NF}')
    echo "$latestver"
    1901020099
    

    它是如何工作的:

    • $NF=="misc" 测试最后一个字段是否为 misc
    • {print f} 然后打印变量 f 中的内容
    • {f=$NF}f 设置为最后一个字段。

    由于f 是在测试后设置的,因此它始终具有您要查找的先前值。

    【讨论】:

    • 谢谢!这非常有效,感谢您的解释。
    【解决方案2】:

    请您尝试以下(未测试,因为无法测试 curl)。

    latestver=$(/usr/bin/curl -s -L "ftp://ftp.adobe.com/pub/adobe/reader/mac/AcrobatDC/" | /usr/bin/awk '/misc/{print $NF}')
    echo "Latest Version is: $ltestver"
    

    【讨论】:

    • 您好,谢谢您的回复,但是输出是-“最新版本是:杂项”
    • @DankDalf,好的,它是根据您的尝试编写的,您能否发布您的 curl 命令的输出并让我知道?请编辑您的帖子。
    【解决方案3】:

    您可以使用以下内容:

    $ latestver=$( wget -qO- ftp://ftp.adobe.com/pub/adobe/reader/mac/AcrobatDC/ | grep 'pub/adobe/reader/mac/AcrobatDC' | sed 's/.*">\(.*\)\/<.*/\1/g' | tail -2 | head -1 )
    

    【讨论】:

    • 将单个 Awk 调用换成 grep + sed + tail + head 的曲折迷宫几乎没有改进。
    • @tripleee,写一个答案。总有改进的余地。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多