文本处理工具
1.grep
grep命令是Linux系统中最重要的命令之一,功能是从文本文件或管道数据流中筛选匹配的行和数据,如果再配合正则表达式,功能十分强大.
##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次
我们首先将etc下的passwd中一部分内容复制在mnt底下当做我们的实验资源.
我们可以过滤文件中含有root的数据,然后使用-i来忽略大小写来进行过滤
-E命令可以过滤匹配字符串前后没有其它字符的数据
grep -E = egrep
grep -n 可以显示行号
防止贪婪模式(防止前贪婪\< 后贪婪\>)
过滤passwd文件中行首、行尾不以root开头、结尾,行中有root关键字的行并显示
我们可以使用这些正则表达式来对我们想要的数据进行匹配和显示,
命令练习:编写脚本显示系统中能被su命令切换的用户名称
首先我们编写脚本,搜索passwd中以sh喝bash结尾的数据,再以:为分割截取第一列,就得到了用户名称
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,KaTeX parse error: Expected 'EOF', got '#' at position 11: p' westos #̲#5到最后以行 sed -n …d’ westos
a ##添加sed -e '$a hello world' fstabsed -e '$a hello\nworld' fstabsed -e '/^#/a hello world' fstabc ##替换
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文件中
我们之前想要查看文件中某一行的内容的时候都是先选择前几行再输出这些行中的最后一行,但是这样很多时候都很麻烦,那我们使用sed命令来查找第几行就非常方便,我们不仅可以查询第几行,还可以查询某一行到某一行;以及我们要删除某些行再进行输出也可以很简便的做到,具体如下:
删除fstab第六行
删除2-4行
删除含#号的行
添加
在第一行后加hello westos
在含有#号的行后加hello
写入
将含有uuid的行写入 test中
使用-i参数将内容添加在指定行之前
使用-r参数整合
字符替换
将none替换为#
替换xfs
3.awk
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说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命令以:为分隔符截取显示passwd文件中以bash结尾的行的第一列;使用awk命令以:为分隔符截取显示passwd文件中以bash结尾且含有root关键字的行的第一列,使用awk命令以:为分隔符截取显示passwd文件中以bash结尾或含有root关键字的行的第一列
在开是输入start,结束打印over
用awk命令统计文件中内容行数,首先给N赋初值0,每行加一,最终输出N