【问题标题】:How to change the output of a log file using sed如何使用 sed 更改日志文件的输出
【发布时间】:2013-11-12 10:49:13
【问题描述】:

我有一个日志文件的以下输出

/var/www/user/data/www/domain.com/wp-config.php
/var/www/anotheruser/data/www/otherdomain.com/wp-config.php

我试图得到这样的输出:

domain.com
otherdomain.com

我只知道如何删除/wp-config.php,但直到domain.com,我才知道如何删除所有内容。

问题是它们都是不同的

【问题讨论】:

    标签: linux logging sed output


    【解决方案1】:

    试试这个:

    awk -F'/' 'NF{print $(NF-1)}' log
    

    【讨论】:

    • +1 表示这种有趣的方法,如果它确实总是在结尾处显示“/wp-config.php”(或 /whatever-without-further-slashed),它会正常工作。
    【解决方案2】:

    这可能对你有用(GNU sed):

    sed -r 's|.*/([^/]*)/.*|\1|' file
    

    【讨论】:

    • 取决于 sed 版本,它可能需要从 // 之间的第二个到第 6 个值,因为最后一个 .* ?
    【解决方案3】:
    sed --posix "s#^.*/\([^/]\{1,\}\)/[^/]*$#\1#"
    

    如果域名后有更多信息(子文件夹),则模式需要从头开始工作,而不是像这样从尾开始工作(以/ /之间的第6个模式)。

    【讨论】:

      【解决方案4】:

      很短的awk

      awk -F/ '$0=$(NF-1)' file
      domain.com
      otherdomain.com
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-03
        • 1970-01-01
        • 1970-01-01
        • 2020-05-25
        • 2012-08-05
        • 1970-01-01
        • 2012-04-21
        • 2023-02-16
        相关资源
        最近更新 更多