【问题标题】:perl/awk/sed one liner for removing directory name from a text file containing list of pathsperl/awk/sed 一个用于从包含路径列表的文本文件中删除目录名称的衬垫
【发布时间】:2013-09-06 19:13:05
【问题描述】:

我有一个如下格式的文本文件:

/path1/path2/file.ext:20 ..................
/path1/path2/file2.ext:120 ..................
/path4/file.ext:93 ..................

我想得到以下格式的输出:

file.ext:20 ..................
file2.ext:120 ..................
file.ext:93 ..................

使用 perl/awk/sed。

【问题讨论】:

    标签: perl sed awk


    【解决方案1】:

    一个简单的 sed 就可以了:

    sed 's|^.*/||g' file
    

    Awk:

    awk 'sub(/^.*\//, "")' file
    

    或者

    awk -F/ '{print $NF}' file
    

    【讨论】:

    • 只要后面没有/s(是的,我就是那个人)。 +1。
    • 非常好,正是我想要的。谢谢。
    【解决方案2】:

    使用 awk:

    awk -F '/' '{print $NF}' file
    

    【讨论】:

      【解决方案3】:

      使用 perl,

      perl -pe 's|.*/||' file
      

      【讨论】:

        【解决方案4】:

        perl 中可能的解决方案:

        一个使用 File::Basename:

        perl -MFile::Basename -ne 'print basename $_' FILE
        

        【讨论】:

        • /gio 好像没用
        • true,不随sbstitution生效。 ->删除
        【解决方案5】:

        使用 grep

        grep -oP '.*/\K.*' file
        

        【讨论】:

        • 我认为你不需要领先的.*
        • @tripleee 没有它只会删除第一个 /
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-20
        • 2021-01-20
        • 1970-01-01
        • 1970-01-01
        • 2011-02-22
        • 1970-01-01
        相关资源
        最近更新 更多