栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Shell中的正则表达式及管道命令

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Shell中的正则表达式及管道命令

一、正则表达式 一、正则表达式概述 1、正则表达式的描述

(Regular Expression)描述一个字符串集合的表达方式

2、egrep过滤工具(等同grep -E 表示允许使用扩展的正则表达式)

文本处理顺序:

        - 以行为单位,逐行进行处理

        - 默认只输出与表达式相匹配的文本行

基本用法:

        - 格式1:egrep  [选项]  '正则表达式'  文件.. ..

        - 格式2:前置命令  |  egrep  [选项]  '正则表达式'

常用命令选项:

选项释义
-i忽略字母大小写
-v条件取反
-c统计匹配的行数
-q静默、无任何输出,一般用于检测(看$?的返回值)
-n显示出匹配结果所在的行号
--color标红显示匹配的字串
root@kylin:~l# egrep -c '/bin/bash$' /etc/passwd #检查/etc/hosts文件内是否存在192.168.4.4的映射记录
2
root@kylin:~# grep -q '^127.0.0.1' /etc/hosts && echo "YES" || echo "NO" #检查/etc/hosts文件内是否存在127.0.0.1的映射记录
YES
root@kylin:~# egrep -v '.' file.txt             #输出文件内的空行'.'等同'^$'

二、基本正则符号
正则符号描述
abc匹配abc
^匹配开头
$匹配结尾
[集合]匹配集合中的任意单个字符
[^集合]对集合取反
.匹配任意单个字符
*匹配前一个字符任意次(包含0次)
{n,m }匹配前一个字符n到m次
{n, }匹配前一个字符至少n次
{n }匹配前一个字符n次
root@kylin:~ # grep '^r' /etc/passwd                #输出以“r”开头的用户记录
root:x:0:0:root:/root:/bin/bash
root@kylin:~ # grep 'localhost$' /etc/hosts         #输出以“localhost”结尾的行
127.0.0.1	localhost
root@kylin:~ # egrep '^root|^daemon' /etc/passwd    #输出以“root”或者以“daemon”开头的行
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
root@kylin:~# egrep '.' file.txt                    #输出非空行
abcdefg
123456
#*#@@@
三、扩展正则符号
正则符号描述
+匹配前面的字符至少一次
匹配前面的字符0或1次
()组合与保留
|或者
{n,m}匹配前面的字符n到m次
{n,}匹配前面的字符至少n次
{n}匹配前面的字符n次
root@kylin:~# egrep '@+' file.txt     #输出@至少出现一次
#*#@@@
root@kylin:~# egrep 'file(name)?' file.txt #输出包括file、filename的行,即末尾的“file”最多出现一次(可能没有)
file
filename
filenamenamename
root@kylin:~# egrep 'name*' file.txt     #输出“name”可出现任意多次,也可以没有。重复目标只有一个字符时,可以不使用括号
filename
filenamenamename
root@kylin:~# egrep '^f.*e$' file.txt    #匹配f开头e结尾的所有行
file
filename
filenamenamename
root@kylin:~# egrep '(name){3}' file.txt #输出包括name的行,即“aname”连续出现3次
filenamenamename
root@kylin:~# egrep '(name){1,3}' file.txt #输出包括name的行,name连续出现1~3次
filename
filenamenamename
root@kylin:~# egrep '(name){3,}' file.txt  #输出包括name的行,name最少出现3次
filenamenamename
root@kylin:~# egrep 'ab[cd]' file.txt      #输出包括abc、abd的行,即前两个字符为“ab”,第三个字符只要是c、d中的一个就符合条件
abcdefg
abdbck
root@kylin:~# egrep '[^a-z]' file.txt      #过滤“非小写字母”的其他字符
123456123123
#*#@@@
 四、Perl兼容的正则符号
正则符号描述
b匹配单词边界
w匹配字符数字下划线
W和w相反
s匹配空白
d匹配数字
d+匹配多个数字
D匹配非数字
egrepd等同于grep -E

root@kylin:~# egrep 'bfileb' file.txt     #输出包括单词“file”的行,文件中“filename”等不符合要求(等同'')
file
root@kylin:~# egrep '123>' file.txt        #输出包括以“123”结尾的单词的行,使用 > 匹配单词右边界(等同'123b')
123456123123
root@kylin:~# egrep -i '^123|@$|(name){1,3}' file.txt #匹配123开头、@结尾、name出现1-3次的行
123456123123
#*#@@@
filename
filenamenamename
二、 常见的管道命令 1、sort命令

针对文本文件内容,以行为单位来排序

        - 格式:sort  [选项]  参数

常用选项:

选项释义
-f忽略大小写,将小写字母都转为大写字母来进行比较
-b忽略每行前面的空格
-n按照数字进行排序
-r反向排序
-u等同于uniq,表示相同的数据仅显示一行
-t指定字段分隔符,默认使用[Tab]键分隔
-k指定排序字段
-o<输出文件>将排序后的结果转存到指定文件

2、uniq命令

检查及删除文本中重复出现的行,常与sort命令结合使用

        - 格式:uniq  [选项]  参数

常用选项:

选项释义
-c行数统计,并删除文件中重复的行

-d

仅显示连续的重复行
-u仅显示出现一次的行

 

3、tr命令

转换或删除文件中的字符(从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备)

        - 格式:tr [-cdst][--help][--version][第一字符集][第二字符集]

选项释义
-c保留字符集1的字符,其他的字符用(包括换行符n)字符集2替换
-d删除所有属于字符集1的字符
-s将重复出现的字符压缩为一个字符串;用字符集2 替换 字符集1
-t削减字符集1 指定范围,使之与 字符集2 设定长度相等

 

4、cut命令

显示行中的指定部分,删除文件中指定字段

        - 格式:cut  [选项]  参数 

常用选项:

选项释义
-f通过指定哪一个字段进行提取(默认TAB作为字段分隔符)
-d更改为其他的分隔符
--complement用于排错所指定的字段
--output-delimiter更改输出内容的分隔符

5、实例
[root@QQ ~]# lastb | awk '{ print"      IP地址为:" $3}' | sort | uniq -c | sort -n  #打印第三列(IP地址列),并统计登录失败次数
 
    315       IP地址为:46.101.2.43
    322       IP地址为:159.89.18.209
    377       IP地址为:46.101.91.251
    391       IP地址为:139.59.181.194
    446       IP地址为:178.128.162.3
   3853       IP地址为:164.92.255.243
   4080       IP地址为:159.89.84.212
   4595       IP地址为:103.77.26.70
   4687       IP地址为:159.65.153.54
  14043       IP地址为:143.198.143.203
  15352       IP地址为:159.65.244.144
  44389       IP地址为:75.119.154.165
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/881940.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号