流年似水博客开通了,本站主要是写关于Web和大数据方面内容,正在更新中,欢迎大家光临!
  1. 文章:97 篇
  2. 总浏览:69,681 次
  3. 评论:22条
  4. 最后更新:2020-06-08
  5. 分类目录:39 个

Linux进阶面试题

Command l, xy 575℃ 0评论

面试题sort

  假如有一个score.txt文件,里面保存着学生成绩(姓名,学科,成绩)内容如下:

[root@dongjing sort]# cat score.txt
Tom,Scala,30
Tom,Scala,30
Tom,Java,30
aJack,Python,95
bJack,Python,95
Jack,Spring,95
Mike,Java,95
Linda,Linux,85
Linda,PHP,66
Linda,Linux,85
XY,PHP,100
XY,Java,55
Mike,Scala,9
SS,Shell,99
 
1 查找出每门学科中最高分学生的信息,如果并列并列最高分只取一个(不能包含重复行)
[root@dongjing sort]# sort -u score.txt | sort -t "," -k2,2 -k3,3nr -u | sort -t "," -k2,2 -u
Mike,Java,95
Linda,Linux,85
XY,PHP,100
aJack,Python,95
Tom,Scala,30
SS,Shell,99
Jack,Spring,95
        
  
  2 找到每门学科中学生的总分数(不能包含重复行)    
[root@dongjing sort]# sort -u score.txt | sort -t "," -k2,2 | awk -F "," '($2 == last) || (last == "") {sum += $3}($2 != last) && (last != "") {print last " " sum; sum = $3}{last = $2}END{print last " " sum}'
Java 180
Linux 85
PHP 166
Python 190
Scala 39
Shell 99
Spring 95

    假设 /root 目录下文件如下:
[root@dongjing ~]# ll
total 203776
drwxr-xr-x  3 root root        18 Aug  6 13:50 bak
-rwxr-xr-x. 1 root root  13518306 Apr  4 17:44 brook
drwxr-xr-x  6 root root        52 Sep 15 23:23 command
-rwx------. 1 root root     36413 Jun 13 15:01 install-frps.sh
-rw-r--r--  1 root root 195094741 Jul 18 14:36 jdk-8u221-linux-x64.tar.gz
drwxr-xr-x. 3 root root        76 Sep 15 15:08 server
-rw-r--r--  1 root root        50 Aug  6 19:51 test.php
-rwxr-xr-x. 1 root root      5490 Jun 25 20:58 wireguard_install.sh
    
  1. 找出/root目录下占用空间最大的文件信息
        分析:
            a. 可以使用ll /root 查看出改目录下所有的文件信息
            b. 可以使用sort命令按照文件大小排序(逆序)
            c.  可以使用head命令取排序完成以后的第一行数据,既是/root目录下文件最大的文件
[root@dongjing ~]# ll /root | sort -k5,5nr | head -n 1
-rw-r--r--  1 root root 195094741 Jul 18 14:36 jdk-8u221-linux-x64.tar.gz
[root@dongjing ~]#
[root@dongjing ~]# ll /root | sort -k5,5gr | head -n 1
-rw-r--r--  1 root root 195094741 Jul 18 14:36 jdk-8u221-linux-x64.tar.gz
  1. 找出/root目录下占用空间前三名的文件信息(人们便于阅读方式显示文件大小)
        分析和3.3基本相同,但是该题目中唯一不同的是文件大小要以人们便于阅读的方式显示,于是我们可以使 ll -h 命令可以完成。但是这样以来我们排序的时候就会问题。这里我们使用sort -h 参数来解决
 
[root@dongjing ~]# ll -h  /root | sort -k5hr | head -n 3
-rw-r--r--  1 root root 187M Jul 18 14:36 jdk-8u221-linux-x64.tar.gz
-rwxr-xr-x. 1 root root  13M Apr  4 17:44 brook
-rwx------. 1 root root  36K Jun 13 15:01 install-frps.sh
    
  1. 找出/root目录(同时包括/root子目录)下占用空间前三名的文件(仅限于文件,不包括文件夹)信息
    
[root@dongjing ~]# find  /root -type f -printf "%s\t%p\n" | sort -k1,1gr | head -n 3
195094741    /root/jdk-8u221-linux-x64.tar.gz
13518306    /root/brook
4123899    /root/server/JetbrainsServer.zip
[root@dongjing ~]#
[root@dongjing ~]# find  /root -type f -printf "%s\t%p\n" | sort -k1,1nr | head -n 3
195094741    /root/jdk-8u221-linux-x64.tar.gz
13518306    /root/brook
4123899    /root/server/JetbrainsServer.zip
    
    -printf  格式化打印
    %s   打印文件大小,单位字节
    %p  打印文件名称(带绝对路径名称)
    \t     制表符
    \n    换行符

            如果包含文件夹的话,也可以使用以下命令:
[root@dongjing ~]# du -ah /root | sort -rh | head -n 3
208M    /root
187M    /root/jdk-8u221-linux-x64.tar.gz
13M    /root/brook
  1. 找出/root目录下文件信息按照月份排序,并且每个月份只保存该月份最晚创建或者修改的文件,最后将结果存储在 root.txt文件中
[root@dongjing ~]# ll -h /root | sort -k6,6M -k7,8r | sort -k6M -u -o /root/command/sort/root.txt
[root@dongjing ~]#
[root@dongjing ~]# cat /root/command/sort/root.txt
total 199M
-rwxr-xr-x. 1 root root  13M Apr  4 17:44 brook
-rwxr-xr-x. 1 root root 5.4K Jun 25 20:58 wireguard_install.sh
-rw-r--r--  1 root root 187M Jul 18 14:36 jdk-8u221-linux-x64.tar.gz
-rw-r--r--  1 root root   50 Aug  6 19:51 test.php
drwxr-xr-x  6 root root   52 Sep 15 23:23 command
[root@dongjing ~]#
[root@dongjing ~]# ll -h /root | sort -k6,6M -k7,8r | sort -k6M -u > /root/command/sort/root.txt
[root@dongjing ~]#
[root@dongjing ~]# cat /root/command/sort/root.txt
total 199M
-rwxr-xr-x. 1 root root  13M Apr  4 17:44 brook
-rwxr-xr-x. 1 root root 5.4K Jun 25 20:58 wireguard_install.sh
-rw-r--r--  1 root root 187M Jul 18 14:36 jdk-8u221-linux-x64.tar.gz
-rw-r--r--  1 root root   50 Aug  6 19:51 test.php
drwxr-xr-x  6 root root   52 Sep 15 23:23 command

       注意: 如果需要按照两个或者里两个以上字段排序的时候应该写成如下形式有不同。例如先按照字段2排序,在按照字段2排序应该写成 -k2,2 -k3,3 。 -k2,3 的意思是按照第二列开始,到第二例结束,也就是只有第二列。 

    如果关于sortwc uniq 请点击连接进入。

        

转载请注明:流年似水 » Linux进阶面试题

喜欢 (0)or分享 (0)

Warning: copy(https://cn.gravatar.com/avatar/?s=54&d=%2Fwp-content%2Fthemes%2Fyusi1.0%2Fimg%2Fdefault.png&r=g): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /usr/share/nginx/html/timewentby/wp-content/themes/yusi1.0/functions.php on line 239

Warning: copy(/wp-content/themes/yusi1.0/img/default.png): failed to open stream: No such file or directory in /usr/share/nginx/html/timewentby/wp-content/themes/yusi1.0/functions.php on line 243
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址