用户管理

          第1章        密码管理

1.1  密码管理

    1.1.1  如何让系统更安全

a.最小化安装操作操作系统       安装的系统内容越多,漏洞越多
b.安装软件最小化安装           用什么软件装什么软件
c.保护好root,禁止root登录       使用普通用户登录
d.修改SSH远程登录的默认端口 22  修改为大于10000的端口   1-65535   

 

PS:端口在系统上是唯一的  不能重复使用

在系统服务或者安装的服务默认都是有端口存在的

查看当前系统已在在用的端口

       netstat  -tnulp

 /var/log/secure   安全日志   日志的分析:    failure或Failed 监听如果出现多次系统不安全  

1.1.2  文件系统权限  /etc/passwd

给权限位加 –i 不能删除,不能修改文件

                   a 不能删除,不能修改内容   只能追加新的内容

给重要的文件或命令做一个指纹 :校验

在修改文件前     给当前的文件      做一个校验值

当文件被修改     校验值也会发生变化

文件没有被修改   校验值不变

1.1.3   md5sum 命令

语法格式:md5sum [参数][文件]

常用参数:

-b

以二进制模式读取文件

-t

以文本模式读入文件内容

-c

根据已生成的md5值,对现存文件进行校验

-w

检查输入的md5信息有没有非法行,若有则输出相应信息

--status

校验完成后,不生成错误或正确的提示信息,可以通过命令的返回值来判断

生成文件md5值

[root@linuxcool ~]# md5sum file  

文件内容校验

[root@linuxcool ~]# md5sum -cd.md5 

校验文件后给出信息提示

[root@linuxcool ~]# md5sum file --status

1.1.4  手动测试MD5

[root@oldboyedu-lnb test]# md5sum oldboy.txt
3fe396c01f03425cb5e2da8186eb090d  oldboy.txt
[root@oldboyedu-lnb test]#
[root@oldboyedu-lnb test]# echo alex >> oldboy.txt
[root@oldboyedu-lnb test]# md5sum oldboy.txt
185b70298fd472c9e13c3d039a2fefff  oldboy.txt
 

1.1.5   MD5校验执行过程

第一步:给重要的文件做MD5   指纹验证

[root@oldboyedu-lnb test]# md5sum oldboy.txt
185b70298fd472c9e13c3d039a2fefff  oldboy.txt

第二步;把输出的MD5值存入到一个文件中police.txt

[root@oldboyedu-lnb test]# md5sum oldboy.txt > police.txt
[root@oldboyedu-lnb test]# cat police.txt
185b70298fd472c9e13c3d039a2fefff  oldboy.txt

第三步: 检测当前的文件和原来的指纹是否相同  PS:注意路径问题

[root@oldboyedu-lnb test]# md5sum --check police.txt
oldboy.txt: OK           # 文件未被修改提示正常
[root@oldboyedu-lnb test]# md5sum -c police.txt
oldboy.txt: OK
[root@oldboyedu-lnb test]# md5sum -c police.txt
oldboy.txt: FAILED       # 文件被修改提示失败
md5sum: WARNING: 1 computed checksum did NOT match

注意事项:

1)   在什么情况下使用MD5校验值
 网站代码  对外提供访问的  重要的系统文件   重要的服务配置文件
2)   注意路径问题
3)   在做监测时候  要清楚是内部人员修改   还是外部人员修改
4)   什么情况下修改重要网站代码    内部人员修改(代码上线)

在新功能上线的情况下   或者是补BUG的情况

需要对MD5指纹库  重新做校验(把修改后的文件重新做MD5校验放入police.txt)     

[root@oldboyedu-lnb test]# echo oldboy >> oldboy.txt
[root@oldboyedu-lnb test]# md5sum -c police.txt
oldboy.txt: FAILED
md5sum: WARNING: 1 computed checksum did NOT match
[root@oldboyedu-lnb test]# md5sum oldboy.txt > police.txt
[root@oldboyedu-lnb test]# md5sum -c police.txt
oldboy.txt: OK

5)   如果是黑客修改了我们的代码  导致检测失败

a)  代码必须有备份    最新的备份
b)  把被篡改的文件移动到/tmp下  保留证据
c)  把最新的备份文件移动到站点目录(用户可访问的目录)  快速恢复业务

案例: 批量做指纹验证

1.在/oldboy下创建10个普通文件
2.把所有的普通文件做MD5校验放入police.md5
3.测试检验

 

方法1: 直接使用md5sum 通配符的方式
[root@oldboyedu-lnb oldboy]# md5sum *.txt > police.txt
[root@oldboyedu-lnb oldboy]# md5sum -c police.txt
10.txt: OK
1.txt: OK
2.txt: OK
3.txt: OK
4.txt: OK
5.txt: OK
6.txt: OK
7.txt: OK
8.txt: OK
9.txt: OK

方法2: 使用find加绝对路径路径查找  工作中使用

[root@oldboyedu-lnb oldboy]# find /oldboy/ -type f|xargs md5sum >/opt/police.txt  
[root@oldboyedu-lnb oldboy]# cat /opt/police.txt
b026324c6904b2a9cb4b88d6d61c81d1  /oldboy/1.txt
26ab0db90d72e28ad0ba1e22ee510510  /oldboy/2.txt
6d7fce9fee471194aa8b5b6e47267f03  /oldboy/3.txt
48a24b70a0b376535542b996af517398  /oldboy/4.txt
1dcca23355272056f04fe8bf20edfce0  /oldboy/5.txt
9ae0ea9e3c9c6e1b9b6252c8395efdc1  /oldboy/6.txt
84bc3da1b3e33a18e8d5e1bdd7a18d7a  /oldboy/7.txt
c30f7472766d25af1dc80b3ffc9a58c7  /oldboy/8.txt
7c5aba41f53293b712fd86d08ed5b36e  /oldboy/9.txt
31d30eea8d0968d6458e0ad0027c9f80  /oldboy/10.txt
[root@oldboyedu-lnb oldboy]# md5sum -c /opt/police.txt
/oldboy/1.txt: OK
/oldboy/2.txt: OK
/oldboy/3.txt: OK
/oldboy/4.txt: OK
/oldboy/5.txt: OK
/oldboy/6.txt: OK
/oldboy/7.txt: OK
/oldboy/8.txt: OK
/oldboy/9.txt: OK
/oldboy/10.txt: OK

1.1.6  如何自动检测  MD5+定时任务+脚本

批量添加10个用户stu01,stu02....stu10,并设置8位随机密码(禁止使用for,while等循环)        

方法1

useradd stu01;echo 123456|passwd --stdin stu01;useradd stu02

1.1.6.1   如何创建1个用户       

useradd stu01
useradd stu02
useradd stu10

1.1.6.2   如何让创建用户的命令在每一行显示

[root@oldboyedu-lnb ~]# useradd stu03
[root@oldboyedu-lnb ~]# useradd stu04
[root@oldboyedu-lnb ~]# useradd stu05
[root@oldboyedu-lnb ~]# useradd stu06

PS:只要能显示到屏幕上的可执行命令 都可以直接使用bash进行执行

[root@oldboyedu-lnb ~]# echo ls
ls
[root@oldboyedu-lnb ~]# echo ls|bash
1.txt  count.txt    oldboy.txt  stu02.txt  stu06.txt  stu10.txt  test.txt
2.txt  id.txt       passwd.txt  stu03.txt  stu07.txt  stuaZ.txt
70.txt index.html   stu00.txt   stu04.txt  stu08.txt  stu.txt
alex   lidao-oldboy.txt  stu01.txt   stu05.txt  stu09.txt  test
[root@oldboyedu-lnb ~]# echo useradd test01
useradd test01
[root@oldboyedu-lnb ~]# echo useradd test01|bash
[root@oldboyedu-lnb ~]# id test01
uid=1009(test01) gid=1009(test01) groups=1009(test01)

1.1.6.3   sed 进行拼接

[root@oldboyedu-lnb ~]# seq 10|sed -r 's#(.*)#useradd stu\1#g'
useradd stu1
useradd stu2
useradd stu3
useradd stu4
useradd stu5
useradd stu6
useradd stu7
useradd stu8
useradd stu9
useradd stu10
[root@oldboyedu-lnb ~]# seq 10|sed -r 's#(.*)#useradd stu\1#g'|bash

1.1.6.4   删除用户

 [root@oldboyedu-lnb ~]# seq -w 10|sed -r 's#(.*)#userdel -r stu\1#g'
userdel -r stu01
userdel -r stu02
userdel -r stu03
------------------------
[root@oldboyedu-lnb ~]# echo stu{01..10}|xargs -n1|sed -r 's#(.*)#useradd \1#g'
useradd stu01
useradd stu02
useradd stu03
useradd stu04
useradd stu05
useradd stu06
useradd stu07
useradd stu08
useradd stu09
useradd stu10

1.1.6.5   awk 拼接

[root@oldboyedu-lnb ~]# seq 10|awk '{print "useradd stu0"$1}'
useradd stu01
useradd stu02
useradd stu03
useradd stu04
useradd stu05
useradd stu06
useradd stu07
useradd stu08
useradd stu09
useradd stu010             
[root@oldboyedu-lnb ~]# seq 10|awk '{print "userdel -r stu0"$1}'|bash     
-------------------
[root@oldboyedu-lnb ~]# echo stu{01..10}|xargs -n1|awk '{print "useradd " $1}'
useradd stu01
useradd stu02
useradd stu03
useradd stu04
useradd stu05
useradd stu06
useradd stu07
useradd stu08
useradd stu09
useradd stu10        

---------------------------- 01

[root@oldboyedu-lnb ~]# echo stu{1..10}|xargs -n1|xargs -i useradd {}
[root@oldboyedu-lnb ~]# #useradd stu1 stu2 stu3
[root@oldboyedu-lnb ~]# #-i {}
[root@oldboyedu-lnb ~]# #useradd stu1
[root@oldboyedu-lnb ~]# #useradd stu2    

----------------------------02

[root@oldboyedu-lnb ~]# echo useradd" "stu{01..10}|xargs -n2
useradd stu01
useradd stu02
useradd stu03
useradd stu04
useradd stu05
useradd stu06
useradd stu07
useradd stu08
useradd stu09
useradd stu10         
[root@oldboyedu-lnb ~]# echo useradd" "stu{01..10}
useradd stu01 useradd stu02 useradd stu03 useradd stu04 useradd stu05 
useradd stu06 useradd stu07 useradd stu08 useradd stu09 useradd stu10           

----------------------------03

[root@oldboyedu-lnb ~]# echo useradd_stu{1..10}|xargs -n1|sed 's#_# #g'
useradd stu1
useradd stu2
useradd stu3
useradd stu4
useradd stu5
useradd stu6
useradd stu7
useradd stu8
useradd stu9
useradd stu10

-------------------04

[root@oldboyedu-lnb ~]# echo -e '\n'useradd'\t'stu{01..10}
useradd    stu01
useradd    stu02
useradd    stu03
useradd    stu04
useradd    stu05
useradd    stu06
useradd    stu07
useradd    stu08
useradd    stu09
useradd    stu10  

1.1.6.6   给每个用户创建一个随机密码

          1)如何生成随机密码

第一个方法: echo $((RANDOM))|md5sum|cut -c1-8  数字区间0-32767 

[root@oldboyedu-lnb ~]# echo $((RANDOM))|md5sum|cut -c1-8
639ca2d9
[root@oldboyedu-lnb ~]# echo $((RANDOM))|md5sum|cut -c1-8
146e52c9
[root@oldboyedu-lnb ~]# echo 1|md5sum
b026324c6904b2a9cb4b88d6d61c81d1  -
[root@oldboyedu-lnb ~]# echo 2|md5sum
26ab0db90d72e28ad0ba1e22ee510510  -
[root@oldboyedu-lnb ~]# echo 3|md5sum
6d7fce9fee471194aa8b5b6e47267f03  -          
 

第二个方法: date +%N|md5sum |cut -c1-8

[root@oldboyedu-lnb ~]# date +%N|md5sum |cut -c1-8
863fda71
[root@oldboyedu-lnb ~]# date +%N|md5sum |cut -c1-8
71d47869
[root@oldboyedu-lnb ~]# date +%N|md5sum |cut -c1-8
bdf8d2e5
[root@oldboyedu-lnb ~]# date +%N|md5sum |cut -c1-8
2a4ec3de

2) 如何拼接到批量创建用户

   awk拼接

 [root@oldboyedu-lnb ~]# echo stu{01..10}|xargs -n1|awk '{print "useradd " $1";echo 123456|passwd --stdin " $1}'
useradd stu01;echo 123456|passwd --stdin stu01
useradd stu02;echo 123456|passwd --stdin stu02
useradd stu03;echo 123456|passwd --stdin stu03
useradd stu04;echo 123456|passwd --stdin stu04

   sed拼接

[root@oldboyedu-lnb ~]# echo stu{01..10}|xargs -n1|sed -r 's#(.*)#useradd \1;echo 123456|passwd --stdin \1#g'
useradd stu01;echo 123456|passwd --stdin stu01
useradd stu02;echo 123456|passwd --stdin stu02
useradd stu03;echo 123456|passwd --stdin stu03
useradd stu04;echo 123456|passwd --stdin stu04    

1.1.6.7   多个用户创建随机密码  (sed拼接)

[root@oldboyedu-lnb~]# seq -w 10|sed -nr 's#.*#useradd stu& ; echo `tr -cd '[:alnum:][:punct:]' < /dev/urandom | head -c8` | tee -a /tmp/passwd | passwd --stdin stu&#gp'
useradd stu01 ; echo `tr -cd [:alnum:][:punct:] < /dev/urandom | head -c8` | tee -a /tmp/passwd | passwd --stdin stu01
useradd stu02 ; echo `tr -cd [:alnum:][:punct:] < /dev/urandom | head -c8` | tee -a /tmp/passwd | passwd --stdin stu02
useradd stu03 ; echo `tr -cd [:alnum:][:punct:] < /dev/urandom | head -c8` | tee -a /tmp/passwd | passwd --stdin stu03
useradd stu04 ; echo `tr -cd [:alnum:][:punct:] < /dev/urandom | head -c8` | tee -a /tmp/passwd | passwd --stdin stu04
useradd stu05 ; echo `tr -cd [:alnum:][:punct:] < /dev/urandom | head -c8` | tee -a /tmp/passwd | passwd --stdin stu05
useradd stu06 ; echo `tr -cd [:alnum:][:punct:] < /dev/urandom | head -c8` | tee -a /tmp/passwd | passwd --stdin stu06
useradd stu07 ; echo `tr -cd [:alnum:][:punct:] < /dev/urandom | head -c8` | tee -a /tmp/passwd | passwd --stdin stu07
useradd stu08 ; echo `tr -cd [:alnum:][:punct:] < /dev/urandom | head -c8` | tee -a /tmp/passwd | passwd --stdin stu08
useradd stu09 ; echo `tr -cd [:alnum:][:punct:] < /dev/urandom | head -c8` | tee -a /tmp/passwd | passwd --stdin stu09
useradd stu10 ; echo `tr -cd [:alnum:][:punct:] < /dev/urandom | head -c8` | tee -a /tmp/passwd | passwd --stdin stu10

    awk拼接

[root@oldboyedu-lnb~]# seq -w 10 |awk '{print $1 "useradd stu " $1 " echo `tr -cd '[[:blank:]][[:prunt:]]' < /dev/urandom |head -c8` |tee -a /tmp/passwd --stdin stu" $1}'
01useradd stu 01 echo `tr -cd [[:blank:]][[:prunt:]] < /dev/urandom |head -c8` |tee -a /tmp/passwd --stdin stu01
02useradd stu 02 echo `tr -cd [[:blank:]][[:prunt:]] < /dev/urandom |head -c8` |tee -a /tmp/passwd --stdin stu02
03useradd stu 03 echo `tr -cd [[:blank:]][[:prunt:]] < /dev/urandom |head -c8` |tee -a /tmp/passwd --stdin stu03
04useradd stu 04 echo `tr -cd [[:blank:]][[:prunt:]] < /dev/urandom |head -c8` |tee -a /tmp/passwd --stdin stu04
05useradd stu 05 echo `tr -cd [[:blank:]][[:prunt:]] < /dev/urandom |head -c8` |tee -a /tmp/passwd --stdin stu05
06useradd stu 06 echo `tr -cd [[:blank:]][[:prunt:]] < /dev/urandom |head -c8` |tee -a /tmp/passwd --stdin stu06
07useradd stu 07 echo `tr -cd [[:blank:]][[:prunt:]] < /dev/urandom |head -c8` |tee -a /tmp/passwd --stdin stu07
08useradd stu 08 echo `tr -cd [[:blank:]][[:prunt:]] < /dev/urandom |head -c8` |tee -a /tmp/passwd --stdin stu08
09useradd stu 09 echo `tr -cd [[:blank:]][[:prunt:]] < /dev/urandom |head -c8` |tee -a /tmp/passwd --stdin stu09
10useradd stu 10 echo `tr -cd [[:blank:]][[:prunt:]] < /dev/urandom |head -c8` |tee -a /tmp/passwd --stdin stu10 

第三个方法:  tr -cd '[:alnum:][:punct:]' < /dev/urandom | head -c8` | tee –a

[root@oldboyedu-lnb~]# echo stu{01..10}`tr -cd [:alnum:] < /dev/urandom | head -c8` | xargs -n1 |sed -r 's#(.{5})(.*)#useradd \1 \&\& echo \2 | passwd --stdin \1#g'
useradd stu01 && echo oQHP7fHy | passwd --stdin stu01
useradd stu02 && echo kjqYXMo9 | passwd --stdin stu02
useradd stu03 && echo ndXuHbFn | passwd --stdin stu03
useradd stu04 && echo dfUoerSs | passwd --stdin stu04
useradd stu05 && echo F5Fe4WOE | passwd --stdin stu05
useradd stu06 && echo 52Y81sUP | passwd --stdin stu06
useradd stu07 && echo IWN5fkHW | passwd --stdin stu07
useradd stu08 && echo gm4CXgjq | passwd --stdin stu08
useradd stu09 && echo li2ob28j | passwd --stdin stu09
useradd stu10 && echo Bqj8XVDq | passwd --stdin stu10

1.2  tee命令

tee命令用于将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin。简单的说就是把数据重定向到给定文件和屏幕上。

选项参数

-a:向文件中重定向时使用追加模式;

-i:忽略中断(interrupt)信号。

文件:指定输出重定向的文件.

第2章     Linux命令  chown  sort  uniq

2.1  chown 命令

chown 修改文件的属主属组

命令格式:

chown [参数选项] 属主.属组 file

    2.1.1 修改文件的属主

[root@oldboyedu-lnb test]# chown oldboy .oldboy.txt
[root@oldboyedu-lnb test]# ll
total 16
-rw-r--r-- 1 root   root 168 Aug  5 10:49 all.tar.gz
lrwxrwxrwx 1 root   root   9 Aug  4 11:39 data -> /tmp/data
-rwxr-xr-x 1 root   root  10 Aug  4 11:47 oldboy.bak
-rw-r--r-- 1 oldboy root  24 Aug 12 09:29 oldboy.txt

    2.1.2    同时修改文件的属主属组 重要

[root@oldboyedu-lnb test]# chown oldboy.oldboy oldboy.txt       
[root@oldboyedu-lnb test]# ll oldboy.txt         
-rw-r--r-- 1 oldboy oldboy 24 Aug 12 09:29 oldboy.txt   

    2.1.3    只修改属组 了解    

[root@oldboyedu-lnb test]# chown .root oldboy.txt
[root@oldboyedu-lnb test]# ll oldboy.txt        
-rw-r--r-- 1 oldboy root 24 Aug 12 09:29 oldboy.txt

 2.1.4    修改当前目录和目录下的所有文件 递归修改-R         重要

[root@oldboyedu-lnb test]# chown -R oldboy.oldboy ./*
[root@oldboyedu-lnb test]# ll     
total 16
-rw-r--r-- 1 oldboy oldboy 168 Aug  5 10:49 all.tar.gz
-rwxr-xr-x 1 oldboy oldboy  10 Aug  4 11:47 oldboy.bak
-rw-r--r-- 1 oldboy oldboy  24 Aug 12 09:29 oldboy.txt
-rw-r--r-- 1 oldboy oldboy  45 Aug 12 09:29 police.txt
drwxr-xr-x 2 oldboy oldboy 137 Aug 12 11:04 test
[root@oldboyedu-lnb test]# ll test
total 0
-rw-r--r-- 1 oldboy oldboy 0 Aug 12 11:04 10.txt
-rw-r--r-- 1 oldboy oldboy 0 Aug 12 11:04 1.txt
-rw-r--r-- 1 oldboy oldboy 0 Aug 12 11:04 2.txt       

2.2  企业中常见的笔试题      创建用户和用户组

创建一个 uid 999 不允许登陆 不创建家目录 属于test组 oldboy10用户

PS必须先创建组

[root@oldboyedu-lnb ~]# groupadd -g 888 test
[root@oldboyedu-lnb ~]# useradd -u997 -s /sbin/nologin -M -G test oldboy10
[root@oldboyedu-lnb ~]# id oldboy10
uid=997(oldboy10) gid=1020(oldboy10) groups=1020(oldboy10),888(test)

2.3  用户的相关命令

2.3.1  id  查看用户的信息

2.3.2  w  查看系统性能和用户登陆信息

2.3.3  top 动态查看系统性能信息

           -M 按照内存排序
            -P 按照CPU使用率进行排序
          iotop #显示系统中每个进程使用的磁盘io
          iftop #显示系统网络流量
           htop  #增强版本的top命令

2.3.4   ps aux

          cpu与内存的使用率
          sort -rnk2
          增加sort -h参数
          htop  #增强版本的top命令
          iotop #显示系统中每个进程使用的磁盘io
          iftop #显示系统网络流量

2.3.5  uptime 查看系统性能和用户登录信息

2.4  查看系统性能命令

           w

           uptime

           top

       顶替的命令

        uptime

        free -h

        ps -ef

        命令

       M按照内存使用率排序

       P按照cpu使用率进行排序
       ps aux

       cpu与内存的使用率

       sort -rnk2

       增加sort -h参数

       htop  #增强版本的top命令

       iotop #显示系统中每个进程使用的磁盘io

       iftop #显示系统网络流量

2.5  sort 排序

语法格式:

sort [参数选项] file
cat file|sort [参数选项]
sort [options] file(s)
-r    按照降序排序
-R    随机排序
-n    按照数值进行排序
-f    忽略(fold)字符串中的字符大小写
-u    (独特,unique)删除输出中的重复行
-t c  使用c做为字段界定符
-k X  按照使用c分隔的X列来排序,能够使用多次(默认按照第一列排序)
Example:
cat /etc/passwd | sort -t:rnk3      按照使用:分隔的第三列数字降序排序

  2.5.1  sort默认按照第一列进行排序

         a. 第一列的第一个字母 a..z 正序排序
         b. 第一列的第一个数字 从小到大正序排序

      2.5.1.1   按照数字的第一列正序排序

[root@oldboyedu-lnb ~]# sort test.txt
10
110
200000
300
4555555
5
6
7
8
9

    2.5.1.2   默认按照字符的第一列排序 正序排序

[root@oldboyedu-lnb ~]# sort 2.txt
alex
hjfie
jaifek
lidao
oldboy
oomnfwe
qqqq
rrrr
tttt
uuu
yyyy

2.5.1.3   字符串和数字在一起

[root@oldboyedu-lnb ~]# sort 2.txt
10
110
200000
300
4555555
5
6
7
8
9
alex
hjfie
jaifek
lidao

2.5.1.4   逆序排序  sort –r test.txt

[root@oldboyedu-lnb ~]# sort -r test.txt
9
8
7
6
5
4555555
300
200000
110
10

2.5.1.5   按照数字进行正序排序  sort -n test.txt     sort –rn test.txt

[root@oldboyedu-lnb ~]# sort -n test.txt
5
6
7
8
9
10
110
300
200000
4555555
[root@oldboyedu-lnb ~]# sort -rn test.txt
4555555
200000
300
110
10
9

2.5.1.6   按照第二列的数字进行逆序排序

[root@oldboyedu-lnb ~]# sort -rnk2 3.txt
闫万辰  100
苗稼木  100
林银展  100
李博森 100.00
徐焱   100
吴琦   100

2.5.1.7   统计文本中单词出现的次数  uniq

去重

统计

默认去重(把挨着的 相邻的和自己一模一样的单词进行去重)

uniq [OPTION]... [FILE]... 从输入中删除前后相接的重复的行,连续且完全相同方为重复
-c   显示每行重复出现的次数
-d   仅显示重复过的行
-u   仅显示不曾重复的行
常和 sort 一起配合使用.
Example:
sort userlist.txt | uniq -c       
[root@oldboyedu-lnb ~]# sort 3.txt |uniq -c
2 alex
1 ccccc
2 lidao
1 odlboyedu.com
2 oldboy
1 qqqqq
1 zs
[root@oldboyedu-lnb ~]# sort 3.txt |uniq -c|sort -r|head   重要
2 oldboy
2 lidao
2 alex
1 zs
1 qqqqq
1 odlboyedu.com
1 ccccc

2.5.2  练习作业: 统计出以下域名各出现了多少次  按照出现次数最多的进行排序

把以下内容复制到文件中  先取出过滤域名 然后进行域名的次数统计

cat oldboy.txt

http://www.baidu.com/images/jpg
http://www.sina.com/images/mp4
http://www.baidu.com/static/index.html
http://www.sina.com/static/jpg
http://www.baidu.com/index.html
http://www.sina.com/test/index.html          
结果如下
3 www.baidu.com
2 www.weibo.com                          

2.5.2.1   sed解答

①正序:[root@oldboyedu-lnb~]# sed -r 's#.*(www.*com)/.*#\1#g' oldboy.txt |sort| uniq -c

         3 www.baidu.com
         3 www.sina.com
         1 www.weibo.com

②逆序:[root@oldboyedu-lnb~]# sed -r 's#.*(www.*com)/.*#\1#g' oldboy.txt |sort -r| uniq -c
         1 www.weibo.com
         3 www.sina.com
         3 www.baidu.com      

2.5.2.2   awk解答

①正序:[root@oldboyedu-lnb~]# awk -F / '{print $3}' oldboy.txt |sort|uniq -c
3 www.baidu.com
3 www.sina.com
1 www.weibo.com

逆序

[root@oldboyedu-lnb~]# awk -F / '{print $3}' oldboy.txt |sort -r|uniq -c
1 www.weibo.com
3 www.sina.com
3 www.baidu.com
[root@oldboyedu-lnb~]# awk -F "[:/]+"  '{print $2}' oldboy.txt |sort|uniq -c
3 www.baidu.com
3 www.sina.com
1 www.weibo.com

 

 

 

      

posted @ 2020-09-15 14:20  上善若水~小辉  阅读(312)  评论(0编辑  收藏  举报