文本处理(grep、cut、sort、test)

一、grep与egrep

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

基本元字符:^ $

过滤/etc/passwd以root开头的行,以/bin/bash结尾的行

统计有/sbin/nologin的行数,显示有/sbin/nologin的行号

基本元字符:.    ##过滤非空行

基本元字符: + ? *

egrep '3+' haha            ##输出包括3,33,333....,即至少出现一次
egrep 'color(ful)?' haha   ##末尾的ful最多匹配一次,也可以没有

元字符:{} []

we后面匹配a或者b的行,匹配含有we2次及以上,匹配we后有任意大写字母

二、cut命令

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

练习:获取主机IP

练习:检测网络

ping -c1 -w1 172.25.254.$1 > /dev/null && echo "172.25.254.$1 is up" || echo "172.25.254.$1 is down"
&& 前面命令成功再执行后面的 
|| 前面命令失败则执行后面的

三、sort命令

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

四、uniq命令:对重复字符处理

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

练习:找出/tmp下最大的文件,只取文件名

五、test命令

test "$a" == "$b" 等价 ["$1" == "$2"]
echo $?
["$1" == "$2"]  ##等于            ["$1" != "$2"]  ##不等于
["$1" -eq "$2"] ##等于            ["$1" -ne "$2"] ##不等于
["$1" -le "$2"] ##小于等于         ["$1" -ge "$2"] ##大于等于
["$1" -gt "$2"] ##大于            ["$1" -lt "$2"] ##小于
-a与-o或-z非
["$a" -ne "$b" -a "$a" -gt "$b"] ##与条件
["$a" -ne "$b" -o "$a" -gt "$b"] ##条件至少满足一个

判断一个数是否在0-10内

[-z "$1"]  ##是否为空
[-e "file"] ##是否存在
[-f "file"] ##普通文件
[-b "file"] ##块设备
[-S "file"] ##socket
[-c "file"] ##字符设备
[-L "file"] ##软连接

练习:判断文件类型

测试:

猜你喜欢

转载自blog.csdn.net/passion_for_life/article/details/85309060
今日推荐