Linux文本三剑客
grep:文本过滤(模式匹配工具)
sed: 文本流编辑工具
awk: 文本报告生成器
grep命令:
常用选项:
—color=auto : 对匹配到的文本着色显示
-v: 显示不能够被pattern匹配到的行
-i:忽略大小写
-o:仅显示匹配到的字符串
-q:静默模式,不输出任何信息
-A #: after 后#行
-B #: before 前#行
-C #: context 前后各#行
-E : 使用ERE(使用扩展正则表达式) 等同于egrep
1.显示/proc/meminfo文件中以大小s开头的行(2种方式)
reg: ^[Ss]
grep “^[Ss]” /proc/meminfo
grep -i “^s” /proc/meminfo
2.显示/etc/passwd文件中不以/bin/bash结尾的行
reg: /bin/bash$
grep -v “/bin/bash$” /etc/passwd
3.如果root用户存在,显示其默认的shell程序 位置锚定
[root@test tmp]# id root > /dev/null && grep “^root>“ /etc/passwd | cut -d: -f7
|
4.找出/etc/passwd中的两位或三位数 ; 贪婪匹配 —> 继续往后匹配
reg: [[:digit:]]{2,3}
[root@test tmp]# grep “\<[[:digit:]]{2,3}>“ /etc/passwd
[root@test tmp]# grep “\<[0-9]{2,3}>“ /etc/passwd
[root@test tmp]# grep -E “\<[0-9]{2,3}>“ /etc/passwd — 使用ERE
5.显示/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面存非空白字符行
reg : ^[[:space:]]+[^[:space:]]\
[root@test tmp]# grep “^[[:space:]]+[^[:space:]]+“ /etc/grub2.cfg
6.找出“netstat -tan”命令的结果中以’LISTEN’后跟0、1或多个空白字符结尾的行
reg: LISTEN[[:space:]]$
netstat -tan | grep “LISTEN[[:space:]]$”
7.添加用户bash、testbash以及nologin(其shell为/sbin/nologin),然后找出/etc/passwd文件中用户名同shell名的行
useradd bash && useradd testbash && useradd nologin -s /sbin/nologin
bash:x:1010:1013::/home/bash:/bin/bash
nologin:x:1012:1015::/home/nologin:/sbin/nologin
reg: [[:alnum:]]+
扩展正则:
[root@test tmp]# grep -E “^(\<[[:alnum:]]+>).\1$” /etc/passwd
基本正则:
[root@test tmp]# grep “^(\<[[:alnum:]]+>).\1$” /etc/passwd
\1 : 引用分组的内容;保证用户名和shell同名
awk方式:
[root@test tmp]# awk -F’[:/]’ ‘$1==$NF{print $0}’ /etc/passwd