在日常工作和学习中,文本处理工具给我们提供了较大的便利,今天主要说一下文本处理工具,这个结合shell脚本一块,linux系统中文本处理工具包括:grep、egrep、cut、sed、awk。
目录
一 grep
1.1参数
grep的能力是超级全面的,grep有几个参数,给大家总结一下:
参数 | 功能 |
-i | 不区分大小写 |
-v | 反查,比如搜索不含某字符的行 |
^xxx | 以xxx作为关键字行首的行 |
xxx$ | 以xxx作为关键字行尾的行 |
-A 行数 | 显示正则表达式匹配项之后的行数 |
-B 行数 | 显示正则表达式匹配项之前的行数 |
-n | 查找并显示行号 |
1.2范例
搜索包含lmy字符串的行
grep 关键字 文件路径
查看不包含root关键字的行
grep -v 关键字 文件路径
grep -n 关键字 文件路径
查找后并显示行号
查找以xxx关键字为行首的行
grep ^关键字 文件路径
查看以xxx关键字为行尾的行
grep bash$ 文件路径
-A
选项,是 After 的缩写,表示除了展示匹配行之外,还要展示出匹配行下面的若干行。而示例中的 -A 1 则表示还展示匹配行下面一行的内容。
-B
选项,是 Before 的缩写,表示除了展示匹配行之外,还要展示出匹配行上面的若干行。而示例中的 -B 1 则表示还展示匹配行上面一行的内容。
经典案例:
查看某配置文件除去注释和多余的空行的内容
grep -v -e ‘#’ -e '^$' /etc/ssh/sshd_config
二 egrep
egrep执行效果与"grep-E"相似,使用的语法及参数可参照grep指令,与grep的不同点在于解读字符串的方法。egrep可以搜索字符串包含linux或123的字符
例如:
三 cut
cut的工作就是"剪",具体的说就是在文件中负责剪切数据用的。cut命令从文件的每一行剪切字节、字符和字段,并将这些字节,字符和字段输出。
3.1参数
参数 | 功能 |
-f | 列号,取第几列 |
-d | 分隔符,按照指定的分割符分割列,把一行拆成N多列 |
-c | 按字符进行切割,后加n,表示取第n列,比如:-c 1 |
3.2案例
列出/etc/passwd文件第一列的信息
cut -d ":" -f 1 /etc/passwd //以“:”为分隔符,将第一个字符输出
列出/etc/passwd文件第1,2,3列的信息
cut -d ":" -f 1,2,3 /etc/passwd
四 sed
sed是一种流编辑器,它一次处理一行内容。处理时,把它处理的行存储在临时缓冲区中,称为”模式空间“,接着用sed命令处理缓冲区间中的内容,处理完后,把缓冲区中的内容送往屏幕。接着处理下一行,这样不断重复直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
4.1 参数
参数 | 意义 |
na | 在当前第n行之下 |
ni | 在当前第n行之上 |
nd | 在当前第n行删除 |
s | 查找并替换 |
4.2 案例
在第一行下面添加了lmy6666666
sed ‘1a fdasfasdf’ 文件路径
注意的是:原文件没有发生任何改变
在第一行上方添加lmy66666666
sed ‘1i fdasfasdf’ 文件路径
列出/etc/passwd文件处理复制第一行的信息
sed ‘1p’ 文件路径
五 awk
一个强大的文本分析工具,把文件逐行读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。
5.1参数
参数 | 意义 |
-F | 指定分割符 -F “;” 'print 打印输出' |
NR | 代表行 |
NF | 代表列 |
5.2范例
awk -F “:" '{print$1}' /etc/passwd //以:为分隔符输出第一列
awk -F “:" 'NR==1{print$1}' /etc/passwd //以:分隔符输出第一行第一列
经典案例,列出ip地址
ifconfig 接口名 | grep netmask | awk 'NR==1{print$2}'