文件处理工具

1. grep 过滤

grep 匹配文件 过滤文件

-i 过滤时忽略大小写

当过滤两个元素 1或2 时 使用egrep egrep=grep-E

grep -E “/<linux” 文件名称 表示linux之前不能有字符

grep -E “linux/>” 文件名称 表示linux之后不能有字符

grep -数字 显示过滤行及过滤行上面或下面几行

grep -n 显示匹配的行所在的行号

grep -A 显示过滤行以及下面的几行

grep -B 显示过滤行以及上面几行

grep -v 反向过滤

grep字符数量匹配规则

^westos 以westos开头的行

westos$ 以westos结尾的行

w....s 中间有4个字符

.....s 前面有5个字符

* 任意字符 在使用时用()来区分单词内字符

? 0到1个字符

{n} n次

{m,n} m到n此

{,n} 0到n次

{m,} 最少m次

(es){2} es最少出现两次

2.sed

sed  参数  命令  处理对象

sed  参数  处理对象 -f  处理规则文件

对字符的处理

p  显示

sed -n 5p westos 显示第5行

sed -n 1,5p westos 显示第1到第5行

sed -ne “3p;5p”  显示三行和五行

sed -ne 1,5p  显示1到5行

sed -ne  5p,$p  显示5行到最后一行

sed -n‘/^#/p  显示以#开头的行

d  删除

  sed '/^#/d' fstab  以#开头的删除

  sed   '/^#/!d'   fstab  除了以#开头的都删除

sed  '1,$5d' fstab   删除1到5行

a  添加

sed -e ’$a hello word‘ fstab   在最后一行添加文本hello word     \n  换行符

 sed '2ahello word' file1   在第二行后面添加文本

sed  '/^#/a hello world' file1   在#后面的行添加文本

c  替换

sed ’/hello word/chello linux‘   file1  把含有hello word的行替换成hello linux

sed '5chello world' file1   把第五行替换成hello word  

i 插入

sed '5ichello world' file1    在第五行插入hello  word

w   把符合的行写到指定文件中

sed '/^hello/w file1' file   把file1 中以hello 开头的行写到file中

r  整合

sed  file file1  把file文件整合到file1文件中

sed ’2rfile‘ file1  吧file中的文件整合到file1文件第二行下面

sed ’/hello linux/file‘  file1   把file文件的内容整合到file1文件中hello linux 行下面

sed  字符替换

 3.awk  报告生成器

awk -F : 'BEGIN{print "start"}{print $1,$7}END{print “end”}' passwd      从start开始显示  以end结束  挑选出1和7列的信息

awk -F : 'BEGIN{print "start"}{print NF}' passwd     NF  显示每行的列数

awk -F : 'BEGIN{print "start"}{print NR}' passwd    NR 显示每行的行号

awk -F : '/bash/{print $1}' passwd   打印含有bash的行的第一列

awk -F : '/bash|nologin/{print $1}' passwd   打印含有bash或nologin的行的第一列   单个元素

awk -F : '/^root/||/bash/{print $1}' passwd   这个表示的是以root开头的或者以bash结尾的行显示第一列    多个条件

awk -F : '/^root/&&/bash/{print $1}' passwd   这个表示的是以root开头的并且以bash结尾的行显示第一列  多个条件

awk -F : '!/^root/||/bash/{print $1}' passwd   表示不已root开头或者以bash结尾的行显示i第一列

awk -F : '!/^root/&&/bash/{print $1}' passwd   表示不已root揩油并且以bash结尾的行显示第一列

awk -F : '$1~/^root/{print $1}' passwd  只显示第一行不以root开头的行显示第一列

 示例

要求

统计在系统中能su切换的并且用户加目录不在/home下的用户数量

awk -F : '!/home/&&/bash/{print $1}' /etc/passwd    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值