1. grep
命令 | |
---|---|
grep root file | 过滤root关键字 |
grep ^root file | 过滤以root开头的关键字 |
grep root$ file | 过滤以root结尾的关键字 |
grep -i root file | 忽略大小写 |
grep -E “<root” file | root字符之前不能有字符 |
grep -E “root>” file | root字符之后不能有字符 |
grep -数字 | 显示过滤行以及其上面和下面的几行 |
grep -n | 显示匹配的行所在行号 |
grep -A | 显示过滤行以及下面的几行 |
grep -B | 显示过滤行以及上面的几行 |
grep -v | 反向过滤 |
grep字符数量匹配规则 | 说明 |
---|---|
^westos | 以westos开头 |
westos$ | 以westos结尾 |
w…s | w开头到s结尾中间4个任意字符 |
…s | s结尾前面5个任意字符 |
* | 字符出现任意次 |
? | 0到1次 |
+ | 1次到任意次 |
{n} | n次 |
{m,n} | m到n次 |
{0,n} | 0到n次 |
{,n} | 0到n次 |
{m,} | 最少m次 |
(lee){2} | lee字符串出现2次 |
2. sed
3. awk
awk -F 分割符 BEGIN{}{}END{} filename
NR //行数
NF //列数
FILENAME //文件名称本身
linux //变量名
"linux" //字符串
( “”字符串,不加“”就是变量)
/bash$/ 条件
/条件1|条件2/ //条件1或者条件2
/条件1||条件2/ //条件1或者条件2
/条件1/&&/条件2/ //条件1并且条件2
$0 //所有列
$1 //第一列
cp /etc/passwd .
cat passwd //删除了部分内容
awk -F : '{print $1}' passwd //打印第一列的数据
awk -F : '{print $2}' passwd //打印第二列的数据
awk -F : '{print $1$2}' passwd //打印第一列和第二列的数据
awk -F : '{print $1" "$2}' passwd //打印第一列和第二列数据时中间有分割符为空格
awk -F : 'BEGIN{print "userlist:"}{print $1}END{print "end"}' passwd //打印第一列的数据,以userlist字符串开始,以end字符串结尾
awk -F : '{print NR}' passwd //打印行数
awk -F : '{print FILENAME}' passwd //打印文件的名字
awk -F : 'BEGIN{linux=0}{print linux}' passwd //打印linux变量的数值
awk -F : 'BEGIN{linux=0}{print "linux"}' passwd
awk -F : '{print "linux"} passwd //打印linux字符串
awk -F : '/bash$/{print $1}' passwd //打印以bash结尾的用户(第一列的数据)
awk -F : '/bash$/&&/^root/{print $1}' passwd //打印以bash结尾,并且以root开头的字符(第一列)
awk -F : '/bash$/||/^root/{print $1}' passwd //打印以bash结尾,或者以root开头的字符(第一列)
awk -F : '/bash$/||/root/{print $1}' passwd //打印以bash结尾,或者含有root的字符(第一列)
awk -F : '/bash$|root/{print $1}' passwd //打印以bash结尾,或者含有root的字符(第一列)
awk -F : '/bash$&&root/{print $1}' passwd //错误打印
awk -F : '$7~/\/bin\/bash/{print $1}' passwd //打印第7列含有/bin/bash的第一列字符
awk -F : '$7!~/\/bin\/bash/{print $1}' passwd //打印第7列不含有/bin/bash的第一列字符
awk -F : ‘/root/{print $1}' passwd //打印每行含有root关键字的第一列
3.1 测试
测试1:
打印出passwd的总行数和最后一行用户使用的shell的名称
[root@westos_node1 Desktop]# awk -F : 'END{print NR;$NF}' /etc/passwd
测试2:
统计在系统中能su切换的并且用户家目录不在/home下的用户数量
[root@westos_node1 Desktop]# awk -F : 'BEGIN{N=0}/bash$|sh$/&&$6!~/^\/home/{N++}END{print N}' /etc/passwd
1
测试3:
打印出ip地址
[root@westos_node1 Desktop]# ifconfig ens3 | awk '/inet\>/{print $2}'
172.25.254.123