Linux命令练习5:wc命令;find命令;cut-sort-uniq以及正则表达式的练习题

wc

功能:统计指定文件中的字节数、字数、行数,并将统计结果显示输出
在这里插入图片描述

find:实时查找工具

用法:find 【选项】【查找起始路径】【查找条件】【处理动作】
在这里插入图片描述
1、 根据文件名找:-name
2、 根据文件从属关系查找

-user查找属主指定用户的所有文件
-group查找属组指定组的所有文件
-uid查找属主指定UID的所有文件
-gid查找属组指定GID的所有文件
-nouser查找没有属主的文件
-nogroup查找没有属组的文件

3、根据文件类型查找

-type f:文件
d:目录
l:符号链接
p:管道
4、组合测试
-a :与
-o:或
-not,!:非
5、根据文件大小查找: -size [+|-]
6、根据时间戳查找(天 为单位)
-atime:查看时间
-mtime:修改时间
+n天:n天前
-n天:n天内
在这里插入图片描述

例题:

cut-sort-uniq练习题:

2019-1010-1920 192.345.23.3 cause:“wrong password” type:“A” loginIn
2019-1010-1920 192.345.23.1 cause:“Bad block” type:“A” loginIn
2019-1010-1920 192.345.23.3 cause:“wrong password” type:“S” loginIn
2019-1010-1920 192.345.23.1 cause:“Bad tempt” type:“A” loginIn

1.提取第三列

cut -d ‘ ’ -f n:列出第几段的信息

[root@localhost ~]# touch 123b.txt
[root@localhost ~]# vi 123b.txt
[root@localhost ~]# cat 123b.txt |cut -d ' ' -f3
cause:"wrong
cause:"Bad
cause:"wrong
cause:"Bad

2.提取cause字段的原因值(结合正则规则匹配过滤)
提示grep命令参数:
-E 表示使用正则
-o 表示只显示匹配到的内容

grep -Eo ‘".*"’:过滤并只显示“”中任意长度的内容 (关于正则表达式可参考本博客上一篇文章)
cut -d ‘ ’ -f1,2:列出过滤中内容的1,2列

[root@localhost ~]# cat 123b.txt |grep -Eo '".*"' |cut -d ' ' -f1,2
"wrong password"
"Bad block"
"wrong password"
"Bad tempt"

3.对上题提取的关键词进行统计,并按照升序或者降序排列。

提示:
将关键词按照列或者按照正则提取出来之后,首先要进行sort排序, 然后再进行uniq去重。
不进行排序就直接去重,统计的值就不准确。因为uniq去重只能去除连续的相同字符串。不是连续的字符串,则会统计多次。
|sort -n :排序
|uniq -c :去重

[root@localhost ~]# cat 123b.txt |egrep -o '".*"' |cut -d ' ' -f1,2 |sort -n |uniq -c
      1 "Bad block"
      1 "Bad tempt"
      2 "wrong password"

正则练习题:(关于正则表达式可参考本博客上一篇文章)
(1)、显示/proc/meminfo 文件中以大小s 开头的行

^:行首锚定符

[root@localhost proc]# grep -i "^s" /proc/meminfo

(2)、显示/etc/passwd 文件中不以/bin/bash 结尾的行

-v:反向过滤

[root@localhost proc]# grep -v "/bin/bash$" /proc/meminfo

(3)、显示/etc/passwd 文件中ID 号最大的用户的用户名及其shell

sort -rn:使用数字进行反向排序
-t ‘:’:使用 :作为分隔符
-k3:以第三列来进行排序(关于sort命令详情可查看本博客的Linux练习4)
head -1:前1行

[root@localhost ~]# cat /etc/passwd |sort -rn -t ':' -k3 |head -1|cut -d ':' -f1,7
kk:/bin/bash

(4)、找出/etc/passwd 中的两位或三位数或四位数

< PETERN >:匹配完整单词
[0-9]{2,4}:数字至少出现2次,最多4次 <
< [0-9]{2,4}>:匹配完整的数字,且数字最少出现2次,最多4次

[root@localhost proc]# grep -o "\<[0-9]\{2,4\}\>" /etc/passwd

(5)、显示/etc/grub2.cfg 文件中,至少以一个空白字符开头的且后面存非空白字符的行

+:匹配其前面的字符一次或多次
^:行首锚定符
[1]:非空白行

[root@localhost etc]# grep '^[[:space:]]\+[^[:space:]]' /etc/grub2.cfg

(6)、找出/etc/passwd 文件中用户名和shell名一致的行
例如下面这些数据就是用户名和shell名一致,即开头和结尾字符一致

\1:模式从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符(第一个括号里的内容与结尾的一致)
.*:匹配任意长度的任意字符
^:行首锚定符
$:行尾锚定符

[root@localhost etc]# egrep '^(.*):.*\1$' /etc/passwd
sync:x:5:0:sync:/etc/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
nologin:x:1004:1004::/home/nologin:/sbin/nologin

(7)、使用正则命令取出本机的IPv4 地址

IPv4地址首先需通过 ip -a 口令调出来
其次,在使用grep过滤出该行特有的关键词(可进行多次过滤)

[root@localhost ~]# ip a |grep inet |grep brd
inet 192.168.47.128/24 brd 192.168.47.255 scope 
global noprefixroute dynamic ens33

(8).显示出/etc/passwd 文件中所有含有root的行

grep 关键字:过滤出某关键字

[root@localhost etc]# grep "root" /etc/passwd

(9)输出/etc/passwd 文件中任何包含bash的所有行,还要输出紧接着这行的上下各两行的内容

-C #:前后各 # 行 (正则表达式的命令)

[root@localhost etc]# grep "bash"  -C 2 /etc/passwd

(10)显示/etc/passwd 文件中出有多少行含有nologin。

wc -l:统计行数

[root@localhost etc]# cat /etc/passwd |grep  "nologin" |wc -l

15

(11)显示出/etc/passwd 文件中那些行含有root,并将行号一块输出。

grep -n:显示行号

[root@localhost etc]# cat /etc/passwd |grep -n "root"
1:root:x:0:0:root:/root:/bin/bash
11:operator:x:11:0:operator:/root:/sbin/nologin

(12)新建建四个用户
Alex213sb
Wpq2222b

yH438PIG
egon666
egon
过滤出/etc/passwd 文件中用户名组成是字母+数字+字母的行

grep -i:忽略字符的大小写
/etc/passwd 文件中的用户名在第一列,所以需要用cut命令先列出第一列,然后再过滤

[root@localhost /]# cat /etc/passwd |cut -d ':' -f1 |grep -i '^[a-z].*[0-9].*[a-z]$'  

(13)过滤掉/etc/ssh/sshd_config内所有注释和所有空行

egrep ’ | ':过滤“|”前后两个内容(扩展正则表达式)
#:注释符
^$:空白行

[root@localhost ~]# egrep -v '#.*|^$' /etc/ssh/sshd_config

find命令练习题:
1.查找/etc/目录下,所有.conf后缀的文件

[root@localhost ~]# find /etc  -name '*.conf'

2.查找/var目录下属主为root,且属组为mail的所有文件

[root@localhost ~]# find /var -user root -a -group mail

3.查找/var目录下7天以前,同时属主不为root,也不是postfix的文件(如果没有这样的文件,可以将查找时间缩短)

[root@localhost ~]# find /var -mtime +7 -not -user root -a -not -user postfix

4.查找/etc目录下大于1M且类型为普通文件的所有文件

[root@localhost ~]# find /etc -size +1M -type f

5.查找/目录下最后创建时间是3天前,后缀是*.log的文件

[root@localhost ~]# find / -mtime +3 -name '*.log'

  1. :space: ↩︎

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值