一、grep
介绍:
grep==Globally search a Regular Expression and Print
即全局搜索正则表达式,其搜索模式为贪婪模式,类似于模糊搜索概念
grep 支持基础的正则表达式
egrep 支持基础以及扩展的正则表达式(==grep -E)
使用格式:
grep/egrep/grep -E ‘匹配条件’ ‘处理对象’
grep root passwd ##过滤显示含root关键字的内容
grep -i root passwd ##忽略大小写
grep -E "\<root" passwd ##root字符前无字符
grep -E "root\>" passwd ##root字符后无字符
grep -'数字' ‘关键字’ passwd ##显示过滤行及其上下对应的‘数字’行
grep -n ‘关键字’ passwd ##显示匹配的行所在行号
grep -A数字 passwd ##显示过滤行及其下面的行
grep -B数字 passwd ##显示过滤行及其上面的行
grep -v passwd ##反向过滤
grep字符数量匹配规则:
^wang ##以wang开头
wang$ ##以wang结尾
w....g ##含有wg字符且中间字符任意值但数量必须和.的数量一致
.....g ##含有g字符且g前面字符任意值但字符数小于.数的不会被过滤出来
* ##字符出现任意
? ##0到1次
+ ##1到任意次
{n} ##n次
{m,n} ##m-n次
{0,n} ##0-n次
{,n} ##0-n次
{m,} ##最少m次
(linux){3} ##linux字符串出现3次
二、sed
使用格式:
sed ‘参数’ ‘命令’ ‘处理对象’
sed ‘参数’ ‘处理对象’ -f ‘处理规则文件’
常用参数:
-n ##不输出模式空间内容,只输出被处理的内容
-e ##指定多个元素
sed处理命令:
p ##显示
sed -n 5p file ##显示第5行
sed -ne "3p;5p" file ##显示3行和5行
sed -ne 1,5p file ##显示1到5行
sed -ne '5,$p' file ##显示从5行到最后行
sed -n '/^#/p' file ##显示以#开头的行
d ##删除
sed 5d file ##删除第5行
sed '/^#/d' file ##删除以#开头的行
sed '/^UUID/!d' file ##以UUID开头的行不删除,其余都删除
sed -e '5,$d' file ##删除从第5行到最后行
a ##添加(在指定行的下方添加)
sed -e '$ahello' file ##在文件最后行添加hello字符
sed -e '$ahello\nworld' file ##在文件最后行添加hello字符,然后换行再添加world字符
sed -e '/^#/ahello' file ##在以#开头的行下方添加hello字符
c ##替换
sed -e '/^#/chello world' file ##将以#开头的行替换为hello world字符
sed '5chello world' file ##替换文件的第5行为hello world字符
w ##写入符合的输出至文件
sed '/^UUID/wwang' file ##将以UUID开头的行写入文件wang中
i ##插入(在指定行的上方插入)
sed '5ihello' file ##
r ##整合文件
sed '5rwang' file ##将文件wang整合至passwd的指定行的下行
sed字符替换:
sed 's/:/###/' file ##将文件所有行的首列:替换为###
sed 's/:###/g' file ##将文件所有行的全部列的:替换为###
sed '1,5s/:/###/g' file ##将文件1到5行的所有列的:替换为###
sed '1s/:/###/g' file ##将文件1行的所有列的:替换为###
sed '1s/:/###/g;5s/:/###/g' file ##将文件的1行和5行的所有列的:替换为###
sed '/lp/,/halt/s/:/###/g' file ##将lp和halt字符中间的行的所有列的:替换为###
sed 's/\//###/g' file ##将文件中所有的/替换为###
sed 's@/@####@g' file ##同上
sed 's@/@####@g' -i file ##把经sed处理后的内容保存到原file中
三、awk
使用格式:
awk -F ‘分隔符号’ ‘BEGIN{print XX}{print XX}END{print XX}’ '处理对象'
BEGIN ##处理前动作
END ##处理结束后的动作
awk命令内置参数:
~ ##等于
!~ ##不等于
NR ##行数
NF ##列数
FILENAME ##文件名称本身
wang ##wang变量的值
“wang” ##wang这一字符串
$0 ##所有列
$1 ##第1列
$2 ##第2列
依次类推......
awk -F : 'BEGIN{n=0}{n++}END{print n}' passwd
设定n=0;n++ ##每处理一行n+1;处理完所有行后打印n的值
/bash$/ ##条件
/条件1 | 条件2/ ##一个条件中的两个或关系的元素
/条件1/||/条件2/ ##条件1或条件2(或关系)
/条件1/&&/条件2/ ##条件1和条件2(且关系)
不能使用格式/条件1&条件2/进行操作