• sed & awk


    看到过的最好的一个讲解sed & awk的PPT

    http://www.cs.nyu.edu/~mohri/unix08/lect5.pdf

    现在制作一个自己的版本的ls

    sed_ls_fmt

    s/^d/dir  /1
    s/^-/file /1
    s/([rwxs-]{3})([rwxs-]{3})([rwxs-]{3})/1 2 3/
     

    awk_ls_fmt

    NR != 1{
        size = 0
        unit = "B"
     
        if ($8 < 1024)
            size = $8
        else if($8 < 1024 * 1024)
        {
            size = $8/1024 
            unit = "KB"
        }
        else if($8 < 1024 * 1024 * 1024)
        {
            size = $8/1024/1024 
            unit = "MB"
        }
        else
        {
            size = $8/1024/1024/1024 
            unit = "GB"
        }
     
        printf("%6s	link:%s	owner:%6s[%s]	group:%6s[%s]	others:[%s]	%6.2f %s	mtime:[%2s %2s %5s] %s
    ", 
            $1, 
            $5, 
            $6, 
            $2, 
            $7, 
            $3, 
            $4, 
            size, 
            unit,
            $9,
            $10,
            $11,
            $12);
    }
     

    ls.sh

    ls -l $1 | sed -f sed_ls_fmt | awk -f awk_ls_fmt

    效果如下:

    bash ls.sh ~
    file    link:1    owner:daniel[rw-]    group:daniel[r--]    others:[r--]     32.62 MB    mtime:[3月 28 17:33] pin-2.13-62732-gcc.4.4.7-linux.tar.gz
    dir    link:2    owner:daniel[rwx]    group:daniel[r-x]    others:[r-x]      4.00 KB    mtime:[2月 12 20:01] 公共的
    dir    link:2    owner:daniel[rwx]    group:daniel[r-x]    others:[r-x]      4.00 KB    mtime:[2月 12 20:01] 模板
    dir    link:2    owner:daniel[rwx]    group:daniel[r-x]    others:[r-x]      4.00 KB    mtime:[2月 12 20:01] 视频
    dir    link:2    owner:daniel[rwx]    group:daniel[r-x]    others:[r-x]      4.00 KB    mtime:[3月  7 15:00] 图片
    dir    link:2    owner:daniel[rwx]    group:daniel[r-x]    others:[r-x]      4.00 KB    mtime:[2月 12 20:01] 文档
    dir    link:2    owner:daniel[rwx]    group:daniel[r-x]    others:[r-x]      4.00 KB    mtime:[5月 22 17:50] 下载
    dir    link:2    owner:daniel[rwx]    group:daniel[r-x]    others:[r-x]      4.00 KB    mtime:[2月 12 20:01] 音乐
    dir    link:2    owner:daniel[rwx]    group:daniel[r-x]    others:[r-x]      4.00 KB    mtime:[3月  8 16:26] 桌面

    add color theme to output:
    NR != 1{
        size = 0
        unit = "B"
    
        if ($8 < 1024)
            size = $8
        else if($8 < 1024 * 1024)
        {
            size = $8/1024 
            unit = "KB"
        }
        else if($8 < 1024 * 1024 * 1024)
        {
            size = $8/1024/1024 
            unit = "33[;31mMB33[0m"
        }
        else
        {
            size = $8/1024/1024/1024 
            unit = "33[;34mGB33[0m"
        }
    
        if ($1 == "file")
        {
            $1 = "33[;34mfile33[0m"
        }
        else
        {
            $1 = "folder"
        }
    
        printf("%6s	link:%s	owner:%6s[%s]	group:%6s[%s]	others:[%s]	%6.2f %s	mtime:[%2s %2s %5s] %s
    ", 
            $1, 
            $5, 
            $6, 
            $2, 
            $7, 
            $3, 
            $4, 
            size, 
            unit,
            $9,
            $10,
            $11,
            $12);
    }


  • 相关阅读:
    Excel如何关闭进程
    Excel_To_DataTable
    将本地项目上传到Github
    对于session,request,cookie的理解
    static的使用
    Java事件监听的四种实现方式
    静态网页和动态网页
    ps -ef|grep详解
    linux ls -l 详解
    PKU2418_树种统计(map应用||Trie树)
  • 原文地址:https://www.cnblogs.com/long123king/p/3747251.html
Copyright © 2020-2023  润新知