目录
## 1.grep [Globally search a Regular Expression and Print]##
## 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
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
下的用户数量