LINUX下的shell脚本-文本处理

这篇博客介绍了LINUX下用于文本处理的shell脚本命令,包括grep命令的使用,如正则表达式的匹配;cut命令在获取主机IP和网络检测中的应用;sort命令的排序功能;uniq命令对重复字符的处理;以及test命令在判断输入数字是否在10以内的实践操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.grep命令

1.grep命令

全面搜索研究正则表达式并显示出来,强大的文本搜索工具,根据用户指定的“模式”对目标文本进行匹配检查,打印匹配到的行,由正则表达式或者字符及基本文本字符所编写的过滤条件

2.grep的使用参数

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

例:

grep root /etc/passwd
grep ^root /etc/passwd 以root开头的句子
grep root$ /etc/passwd 以root结尾的句子
grep -i root /mnt/passwd 筛选root不区分大小写
grep -E  "^root|root$" /mnt/passwd 因为有|,所以需要扩展 等同于 egrep "^root|root$" /mnt/passwd
grep -v ^root /mnt/passwd 不以root开头的句子

在这里插入图片描述
在这里插入图片描述

grep '172.25.254.250' /etc/hosts && echo 'YES' || echo 'NO' ##过滤含有172.25.254.254的行
grep -q '172.25.254.250' /etc/hosts && echo 'YES' || echo 'NO' ##过滤含有172.25.254.254的行,但无任何输出

在这里插入图片描述
3.正则表达式:对于特殊字符需要转义\,并且加上双引号
^westos :以westos开头
westos$:以westos结尾
w…s :以w开头,以s结尾,中间间隔四个字符(几个点就是几个字符)
”w…>“ 以w开头,后面有五个字符
“<…s” 以s结尾,前面有五个字符

  • :字符出现0-任意次
    ?:字符出现0-1次
    +:字符出现1-任意次
    {n}:字符出现n次
    {m,n}:字符最少出现m次,最多出现n次
    {0,n} :0-n次
    {m,}:至少m次
    (xy){n} :xy出现n次
    .*:任意字符

二.基本元字符

1.基本元字符:^ $

egrep -m10 '/sbin/nologin' /etc/passwd
egrep -c '/sbin/nologin' /etc/passwd

在这里插入图片描述
2.基本元字符:. ##过滤非空行
在这里插入图片描述

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

在这里插入图片描述
3.基本元字符: + ? *

egrep 'l+' 1.sh	####输出包括l,ll,lll....,即至少出现一次

在这里插入图片描述
4.基本元字符:{ }
在这里插入图片描述

三.cut命令

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

练习1:获取主机IP

ifconfig eth0 | grep "inet " | awk '{print $2}'
ifconfig eth0 | grep "inet " | cut -d " " -f 10

在这里插入图片描述练习2:检测网络

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	##去掉重复数字
	-o	##输出到指定文件中
	-t	##指定分隔符
	-k	##指定要排序的列

在这里插入图片描述
在这里插入图片描述

五.uniq命令:对重复字符处理

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

在这里插入图片描述

六.test命令

test "$a" == "$b" 等同于 [ "$a" == "$b" ]

[ "$a" = "$b" ]		##等于
[ "$a" != "$b" ]	##不等于
[ "$a" -eq "$b" ]	##等于
[ "$a" -ne "$b" ]	##不等于
[ "$a" -le "$b" ]	##小于等于
[ "$a" -ge "$b" ]	##大于等于
[ "$a" -gt "$b" ]	##大于
[ "$a" -lt "$b" ]	##小于
[ "$a" -ne "$b" -a "$a" -gt "$b" ]	##-a必须条件都满足
[ "$a" -ne "$b" -o"$a" -gt "$b" ]	##-a条件至少满足一个
[ -z "$a" ]		##是否为空
[ -e "file" ]		##是否存在
[ -f "file" ]		##普通文件
[ -b "file" ]		##块设备
[ -S "file" ]		##套接字
[ -c "file" ]		##字符设备
[ -L "file" ]		##软链接

练习:判断输入的数字是否在10以内
1.输入是否为空
2.是否在10以内
3.1<a&lt;10−−&gt;yes4.a&lt;10 --&gt; yes 4.a<10>yes4.a<1 $a>10 --> no

#!/bin/bash

[ -z "$1" ] && {
    echo "please input a number!"
    exit 1
}

[ "$1" -gt "0" -a "$1" -lt "10" ] && {
    echo "YES"
}||{
    echo "NO"
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值