文本处理工具

1.grep [Globally search a Regular Expression and Print]

grep命令是一个Linux文本处理工具,它与egrep命令属于同一系列,这些命令都是用于对文件和文本执行重复搜索任务的工具。我们可以通过grep命令指定特定搜索条件来搜索文件及其内容以获取有用的信息。grep是全局搜索正则表达式并打印出匹配的行,其抓取数据是贪婪模式,即不会漏掉过滤内容,但准确性会相对降低。

grep
grep -E = egrep

grep 匹配条件 处理文件名称
grep  root passwd             ##过滤root关键字所在的行
grep -i root passwd         ##忽略大小写过滤root关键字所在的行
grep -E "\<root" passwd     ##过滤root字符之前没有字符的行
grep -E "root\>" passwd     ##过滤root字符之后没有字符的行
grep -数字                     ##显示过滤行以及上面几行和下面几行
grep -n                     ##显示匹配的行所在行号
grep -A数字                 ##显示过滤行以及下面几行
grep -B数字                 ##显示过滤行以及上面几行
grep -v                     ##反向过滤  不含该关键字的行

正则表达式    含义
^westos        以westos关键字开头
westos$        以westos结尾
w…s              w开头s结尾中间含有3个任意字符
…s                 s结尾前面有3个任意字符
*                     字符出现次数任意(即0次到任意次)
?                    字符出现0到1次
+                    字符出现1次到任意次
{n}                 字符出现n次
{m,n}             字符出现m到n次
{,n}                字符出现0到n次
{m,}               字符最少出现m次

 

练习脚本:
请显示系统中能被su命令切换的用户名称

2.sed

sed 全名叫 stream editor即流编辑器,与 vim 的交互式编辑方式截然不同,作为一种非交互式编辑器,sed使用预先设定好的编辑指令对输入的文本进行编辑,完成之后输出编辑结果。其功能十分强大,加上正则表达式的支持,可以进行大量的复杂文本的编辑操作。

命令格式:
sed 参数 命令 处理对象
sed 参数 处理对象 -f 处理规则文件

p   显示

sed -n 5p westos         ##显示第5行
sed -n 3,5p westos         ##显示第3行到第5行
sed -n "3p;5p" westos     ##显示第3行和第5行
sed -n 1,5p westos     ##显示1-5行
sed -n '5,$p' westos     ##显示第5行到最后一行
sed -n '/^#/p' fstab     ##显示以#开头的行

d  删除

sed 5d passwd ##删除第5行
sed '/^c/d' passwd ##把以c开头的行删除    
sed -e '5,$d' passwd ##删除第5行到最后一行
sed  '/^r/!d' passwd ##删除不是以r开头的所有行

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 '3rtest' fstab   将test文件内容整合到fstab文件第三行之后

sed            字符替换

 注意:以上所有的操作均无法在文件中保存,下面这个方法能保存到文件

sed 's@/@###@g'  -i  passwd 保存到文件

练习及脚本
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 ##第三列

awk -F : '{print NR}' /mnt/passwd  行号
awk -F : '{print NF}' /mnt/passwd  每行有几列
awk -F : '{print FILENAME}' /mnt/passwd   处理的文件名称
awk -F : 'BEGIN{westos=1}{westos++}END{print westos}' /mnt/passwd 每行变量+1,输出最终变量直
awk -F : '/nologin$/{print $1,$3}' /mnt/passwd  nologin结尾的
awk -F : '/nologin$/||/^root/{print $1,$3}' /mnt/passwd

awk -F : '$7!~/bash$/{print $0}' /mnt/passwd   不是bash结尾

#/etc/passwd文件的第六列没有home关键字并且以bash结尾的行
awk -F : '$6!~/home/&&/bash$/{print}' /etc/passwd

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

 运行脚本将文件里面的用户全部建立出来

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值