SHELL基本的文本处理命令(一)

基本文本处理命令

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

[root@server mnt]# grep '172.25.254.250' /etc/hosts && echo 'YES' || echo 'NO'
172.25.254.250 content.example.com
YES
[root@server mnt]# grep -q '172.25.254.250' /etc/hosts && echo 'YES' || echo 'NO'

YES2)基本元字符:^ $

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

[root@server mnt]# egrep -c '/sbin/nologin' /etc/passwd
35
[root@server mnt]# egrep -m10 'sbin$' wsp
root sbin
root sbin sbin
[root@server mnt]# cat wsp
root sbin
root sbin root
root sbin sbin

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

[root@server mnt]# egrep '.' wsp
root sbin
root sbin root
root sbin sbin
root
awd
awd
awd


[root@server mnt]# egrep -v '.' wsp    ##过滤空行
[root@server mnt]# egrep  '^$' wsp    ##过滤空行

基本元字符: + ? *

[root@server ~]# egrep 'f+' 1.sh     ##输出包括f,ff,fff....,即至少出现一次
colorful,color
colorfulful?
stuf
stuff
stufff
stuffff
stufawd
we adw dfg awda
wea web wef
[root@server ~]# egrep 'color(ful)?' 1.sh     ##末尾的ful最多出现一次,也可以没有
color color color
colorful,color
color color.
colorfulful?

元字符:{}

[root@server ~]# egrep '(we){3}' 1.sh
rere wewewe
westos wewewewe Shell
[root@server ~]#
[root@server ~]#
[root@server ~]# egrep '(we){2,4}' 1.sh
xcvb wewe asdawd
rere wewewe
westos wewewewe Shell
[root@server ~]#
[root@server ~]# egrep '(we){3,}' 1.sh
rere wewewe
westos wewewewe Shell
[root@server ~]# egrep '(we)[ab]' 1.sh
weawe IPADDR
wea web wef
[root@server ~]# egrep '[A-Z]' 1.sh
weawe IPADDR
westos wewewewe Shell

 

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


练习:获取主机IP

[root@server ~]# ifconfig eth0 | grep "inet " | awk '{print $2}'
172.25.254.100

[root@server ~]# ifconfig eth0 | grep "inet " | cut -d " " -f 10
172.25.254.100

练习:检测网络

ping -c1 -w1 172.25.254.$1 &> /dev/null && echo 172.25.254.$1 is up || echo 172.25.254.$1 is down


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

[root@server ~]# sort westos
1
12
123
2
3
32
5
51
6
7
[root@server ~]# sort -n westos

1
2
3
5
6
7
12
32
51
123
[root@server ~]# sort -u westos
1
12
123
2
3
32
5
51
6
7
[root@server ~]# sort -t : -k 2 westos
2:0
12:10
2:12
3:2
51:20
5:21
123:22
32:31
5:4
6:4
1:5
51:55
123:66
7:79
[root@server ~]# sort -nt : -k 2 westos
2:0
3:2
5:4
6:4
1:5
12:10
2:12
51:20
5:21
123:22
32:31
51:55
123:66
7:79
[root@server ~]# sort -nt : -k 2 westos -o /mnt/file


5.uniq命令:对重复字符处理
uniq
    -u    ##显示唯一的行
    -d    ##显示重复的行
    -c    ##每行显示一次并统计重复次数

[root@server ~]# sort -n westos | uniq -c
      1 0
      1 1
      2 2
      1 4
      1 6
      1 9
      2 10
      1 20
      1 22
      2 31
      1 55
[root@server ~]# sort -n westos | uniq -d
2
10
31
[root@server ~]# sort -n westos | uniq -u
0
1
4
6
9
20
22
55

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

[kiosk@foundation0 ~]$ ls -Sl /tmp/ | head -2 | cut -d " " -f 9

6.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<10 --> yes
4.$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"
}

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值