一. grep
grep bash passwd ##过滤bash关键字
grep ^bash passwd ##以bash开头
grep bash$ passwd ##以bash结尾
grep -i bash passwd ##后略大小写
grep -E "\<bash" passwd ##bash字符之前不能有字符
grep -E "bash\>" passwd ##bash字符之后不能有字符
grep -数字 ##显示过滤行以及上面几行和下面几行
grep -n ##显示匹配的行所在行号
grep -A ##显示过滤行以及下面几行
grep -B ##显示过滤行以及上面几行
grep -v ##反向过滤
^westos ##以westos开有
westos$ ##以westos结尾
w....s ##w开头s结尾中间4个任意字符
....s ##s结尾前面5个任意字符
* ##字符出现0到人一次
? ##0到1此
+ ##1到任意此
{n} ##n此
{m,n} ##m到n次
{0,n} ##0-n次
{,n} ##0-n次
{m,} ##最少m次
(lee){2} ##lee字符串出现2次
练习脚本:
请显示系统中能被su命令切换的用户名称
二. sed
a) 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 ##显示以#开头的行
b) d##删除
sed 5d westos ##删除第五行
sed '/^#/d'fstab ##把#开头的行删除
sed '/^UUID/!d' fstab ##除了UUID以外的行都删除
sed -e '5,$d' westos ##由第5行删到最后
c) a##添加
sed -e '$a hello world' fstab
sed -e '$a hello\nworld' fstab
sed -e '/^#/a hello world' fstab
d) c##替换
sed -e '/^#/c hello world' fstab
sed '5chello world' westos
e) w##把符合的行写到指定文件中
sed '/^UUID/w westofile' westos ##把westos中UUID开头的行写入westosfile中
f) i##插入
sed '5ihello westos' westos
g) r##整合文件
sed '5r haha' westos
f)sed 字符替换
sed 's/:/###/g' westos ##将每一行第一个出现的:替换为###
sed 's/:/###/' westos ##将所有的:替换为###
sed '1,5s/:/###/g' westos ##将1到5行的:替换为###
sed '1s/:/###/g' westos ##将第一行的:替换为###
sed '1s/:/###/g;5s/:/###/g' westos ##将第一行和第五行的:替换为###
sed '/lp/,/shutdown/s/:/###/g' westos ##将lp到shutdown之间的:替换为###
sed 's/\//####/g' westos ##将所有的/替换为####
sed 's@/@####@g' westos ##将分隔符号用@代替,避免出现错误
sed 's@/@####@g' -i westos ##把sed处理的内容保存到westos文件中
三. awk
awk -F 分隔符(默认不加F的情况下,分隔符为空格)BEGIN{}{}END{} FILENAME
NR ## 行数
NF ## 列数
FILENAME ## 文件名称本身
test ## test变量值
"test" ## test字符串
/bash$/ ## 条件
/条件1|条件2/ ## 条件1或者条件2
/条件1/||/条件2/ ## 条件1或者条件2
/条件1/&&/条件2/ ## 条件1并且条件2
$0 ## 所有的列
$1 ## 第一列
$2 ## 第二列
$6 ## 第六列
ifconfig ens160 | awk '/inet\>/{ print $2 }'
ifconfig ens160 | awk '/inet\>/{ print $NF }'
ifconfig ens160 | awk '/inet\>/{ print $NR }'
ifconfig ens160 | awk 'BEGIN{N=0}/inet\>/{print $NF;N++}END{print N}'