linux中shell的文本处理

1、grep,egrep

grep
        -i                    ##忽略字母大小写
        -v                    ##条件取反
        -c                    ##统计匹配行数
        -q                    ##静默,无任何输出
        -n                    ##显示匹配结果所在的行号

这里我们需要注意的是,引文egrep的功能包括grep的功能,所以我们默认情况和下可以使用egrep,下面来理解一下参数q的用法

grep '172.25.254.250' /etc/hosts && echo 'YES' || echo 'NO'

当带上参数q的时候,就没有了上图中标红的部分

grep -q '172.25.254.250' /etc/hosts && echo 'YES' || echo 'NO'

2.基本元字符:^  $

egrep -m10 '/sbin/nologin' /etc/passwd          ##查看含有/sbin/nologin行的前10行

egrep -c '/sbin/nologin' /etc/passwd               ##含有/sbin/nologin的行数

egrep -m10 'sbin$' lcz                       ##匹配以sbin结尾的行 

egrep '.' lcz                          ##过滤非空行

egrep -v '.' wsp	    ##过滤空行
egrep  '^$' wsp	            ##过滤空行

基本元字符: + ? *

egrep 'f+' lcz 	##输出包括f,ff,fff....,即至少出现一次

egrep 'color(ful)?' lcz               ##末尾的ful最多出现一次,也可以没有

元字符:{}

egrep '(we){3}' lcz                        ##查找连续三个we的字段

egrep '(we){2,4}' lcz                           ##查找连续的2-4个we

egrep '(we){3,}' lcz                        ##匹配连续三个以上的we字段

egrep '(we)[ab]' lcz                              ##匹配wea或者web

 

egrep '[A-Z]' lcz                         ##匹配所有的大写字母

3.cut

cut -d	                                ##指定分隔符
cut -d : -f 1-3 /etc/passwd	        ##指定分隔符为:,显示第1到3列
cut -c 1,4 /etc/passwd		        ##显示第一和第四个字符 

练习,获取主机ip

ifconfig eth0 | grep "inet " | awk '{print $2}'          ##这里的awk可以直接获取第二个变量
ifconfig eth0 | grep "inet " | cut -d " " -f 10          

4.sort命令:排序

sort
        -n            ##纯数字排序
        -r            ##倒序
        -u            ##去掉重复数字
        -o            ##输出到指定文件中
        -t            ##指定分隔符
        -k            ##指定要排序的列

为了做实验,我这里自己编写了一个文件,然后使用sort命令来排序

sort lcz                             ##按照每行第一个数字的大小进行排序

sort -n lcz                                ##纯数字排序

sort -u westos                                 ##去掉重复的数字

从这里开始,再次修改lcz文件,修改为下图

sort -t : -k 2 lcz                         ##以:分割幅,对第二列进行排序

sort -nt : -k 2 westos                    ##以:分割幅,对第二列进行纯数字排序

sort -nt : -k 2 westos -o /mnt/file             ##将排序结果输出到/mnt/file

5)uniq命令:对重复字符处理
 

uniq
        -u        ##显示唯一的行
        -d        ##显示重复的行
        -c        ##每行显示一次并统计重复次数

练习:将/tmp目录中的文件取出最大的

ls -Sl /tmp/ | head -2 | cut -d " " -f 9

猜你喜欢

转载自blog.csdn.net/weixin_40543283/article/details/85260862