##
1.
grep [Globally search a Regular Expression and Print]##
grep
grep
-
E
=
egrep
##grep
格式
##
grep
匹配条件 处理文件
grep root passwd #
过滤
root
关键字
grep
-
i
root passwd ##
后略大小写
grep
-
E "
\<
root" passwd ##root
字符之前不能有字符
grep
-
E "root
\>
" passwd ##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
次
练习脚本
:
请显示系统中能被
su
命令切换的用户名称
####
2.
sed ######
命令格式
:
sed
参数 命令 处理对象
sed
参数 处理对象
-
f
处理规则文件
对字符的处理
p
##
显示
sed
-
n 5p westos ##
显示第五行
sed
-
n
3
,5p westos ##
显示
3
到
5
行
sed
-
ne "3p;5p westos ##
显示
3
和
5
行
sed
-
ne
1
,5p westos ##
1
-
5
行
sed
-
ne
'5,$p'
westos ##5
到最后以行
sed
-
n
'/^#/p'
fstab ##
显示以
#
开头的行
d
##
删除
sed 5d westos ##删除第五行
sed
'/^#/d'
fstab ##把#开头的行删除
sed
'/^UUID/!d'
fstab ##
除了
UUID
以外的行都删除
sed
-
e '5,$d'
westos
a
##
添加
sed
-
e '$a hello world'
fstab
sed
-
e '$a hello\nworld'
fstab
sed
-
e '/^#/a hello world'
fstab
c ##替换
sed
-
e '/^#/c hello world'
fstab
sed
'5chello world'
westos
w
##
把符合的行写到指定文件中
sed
'/^UUID/w westofile'
westos ##
把
westos
中
UUID
开头的行写入
westosfile
中
i
##
插入
sed
'5ihello westos'
westos
r
##
整合文件
sed
'5r haha'
westos
sed
字符替换
sed
's/:/###/g'
westos
sed
's/:/###/'
westos
sed
's/:/###/g'
westos
sed
'1,5s/:/###/g'
westos
sed
'1s/:/###/g'
westos
(含有r的行)
sed
'1s/:/###/g;5s/:/###/g'
westos
sed
'/lp/,/shutdown/s/:/###/g'
westos
sed
's/\//####/g'
westos
sed
's@/@####@g'
westos
sed
's@/@####@g'
-
i
westos
把
sed
处理的内容保存到
westos
文件中
练习及脚本
Apache_port.sh
此脚本接入数字
http
的端口就改为此数字
假设
selinux
为关闭状态
例如
:
sh Apache_port.sh
ERROR
:
Pleaase input port number following script
!!
sh Apache_port.sh
8080
apache
的端口会被修改为
8080
3.
awk
awk
-
F
分隔符
BEGIN{}{}END{} FILENAME
NR #
行数
NF #
列数
FILENAME #
文件名称本身
westos #westos
变量值
“westos” #westos
字符串
/
bash$
/
#
条件
/
条件
1
|
条件
2
/
#
条件
1
或者条件
2
/
条件
1
/||/
条件
2
/
#
条件
1
或者条件
2
/
条件
1
/&&/
条件
2
/
#
条件
1
并且条件
2
$
0
#
所有的列
$
1
#
第一列
$
2
#
第二列
$
3
#
第三列
#
/
etc
/
passwd
文件的第六列没有
home
关键字并且以
bash
结尾的行
awk
-
F
:
'$6!~/home/&&/bash$/{print}'
/
etc
/
passwd
课后练习
:
统计在系统中能
su
切换的并且用户加目录不在
/
home
下的用户数量