Linux文件查看与查找命令(2)

-k  选择某个字段 进行排序

[root@linuxidc ~]# cat /etc/passwd | sort -t ":" -k3 root:x:0:0:root:/root:/bin/bash uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin

uniq:删除重复     (常和sort命令一起使用)

-c 显示每行重复出现的次数

-d 仅显示重复

-u 显示不重复

连续且完全相同方为重复

用last显示登陆用户,排序后显示登陆的次数

[root@linuxidc ~]# last | cut -d' ' -f1 | sort | uniq -c 1 26 reboot 1 wtmp

文本检索工具

grep:作用:文本搜索工具,根据用户指定的模式,对目标文件逐行进行匹配检查,打印匹配到的行

模式:由正则表达式的元字符及文本字符所编写出的过滤条件

-v:取反   显示不能被匹配到的行

-i:忽略字符的大小写

-n:显示行号

-c:显示统计到的行数,等同于wc -l

-o:仅显示匹配到的字符串

-q:静默输出(不输出任何信息) 只关心命令的执行结果 不关心输出结果

-A #:后#行

-B #:前#行

-C #:前后#行  查看日志 搜索关键字排查错误的时候

-e:指定多个条件,条件是或的关系

-w 匹配整个单词

-E === egrep 支持扩展的正则表达式

-F === fgrep 不支持正则表达式

显示出/etc/passwd下root的前后两行(第一个root为第一行,所以没有前两行)

[root@linuxidc ~]# grep -C 2 'root' /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin -- mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin

基本正则表达式

字符匹配:

.:匹配任意单个字符

[]:匹配指定范围内的任意单个字符  ——>  如:[abc] a | b | c

[^]:匹配指定范围外的任意单个字符 ——>  如:[^abc] 除abc之外的字符

[:alnum:] 数字和字符

[:alpha:] 英文大小写字符 a-z A-Z

[:lower:] 小写字母

[:upper:] 大写字母

[:space:] 专门匹配空格

匹配次数:用在要指定其出现的次数的字符的后面,用于限制其前面字符出现的次数

*:匹配其前面的字符任意次    0-无穷

[root@linuxidc ~]# grep "r*" /etc//passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

.*:任意长度的任意字符出现任意次

[root@linuxidc ~]# grep "gdm.*" /etc/passwd gdm:x:42:42::/var/lib/gdm:/sbin/nologin

\?:匹配前面的字符出现0次或者1次 (其前面的字符是可有可无的)

\+:匹配前面的字符至少1次

\{m,\}:匹配前的字符至少出现m次

\{m,n\}:匹配前面的字符出现至少m次至多n次

\{0,n\}:匹配前面的字符最多出现n

\{m,\}:匹配前的字符至少出现m次

位置锚定:用来定位字符出现的位置

^ 锚定行首(用于模式最左侧)

[root@linuxidc ~]# grep "^root" /etc//passwd root:x:0:0:root:/root:/bin/bash

$ 锚定行尾(用于模式最右侧)

[root@linuxidc ~]# grep "bash$" /etc//passwd root:x:0:0:root:/root:/bin/bash zhouao:x:500:500:zhouao:/home/zhouao:/bin/bash openstack:x:3000:3000::/home/openstack:/bin/bash

^$:匹配空行

^[[:space:]]*$:空行或包含空白字符的行

单词:非特殊字符组成的连续字符(字符串)都称为单词

\b  \b:匹配词首和词尾 

[root@linuxidc ~]# grep '\broot' /etc//passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin

\<  \>:匹配词首和词尾

例如:找出/etc/passwd下以/bin/bash结尾的行

[root@linuxidc ~]# grep "bash\>" /etc//passwd root:x:0:0:root:/root:/bin/bash zhouao:x:500:500:zhouao:/home/zhouao:/bin/bash openstack:x:3000:3000::/home/openstack:/bin/bash

分组及引用

\(\):将一个或多个字符捆��在一起,当做一个整体进行处理

分组括号中的模式匹配到的内容会被正则表达式引擎自动记录于内部的变量中

\1:模式从左侧起,第一个括号以及与之匹配的右括号之间的模式所匹配到的字符

\2:模式从左侧起,第二个括号以及与之匹配的右括号之间的模式所匹配到的字符

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/13935.html