精华内容
下载资源
问答
  • 今天自己有了一个小小想法,Linux中的ifconfig/ip命令查看IP地址显示的内容实在太多了,该练习一下如何用正则过滤命令直接提取出(xxx.xxx.xxx.xxx)格式的IP的地址。准备:Linux如何查看IP地址的命令,本人知道两种...

    概述:

    最近一个月一直把精力投入到Linux的学习当中了,越学越觉得Linux实在太好玩了。今天自己有了一个小小想法,Linux中的ifconfig/ip命令查看IP地址显示的内容实在太多了,该练习一下如何用正则过滤命令直接提取出(xxx.xxx.xxx.xxx)格式的IP的地址。

    准备:

    Linux如何查看IP地址的命令,本人知道两种,分别是ifconfig和ip,至于具体用法,在这就不详细说了,我们的主要目标是用正则来过滤两者基本命令获取的内容以至于直接获得地址,但是我们还是必须了解两者获得的内容是不一样的。
    首先,我们先来看看两者的基本命令输出的内容分别是什么。
    命令ifconfig:
    命令ifconfig内容

    命令ip addr:
    ip addr内容

    (注意:本人的工作环境是CentOS6.6,同时因为之前配置过网络,所以是修改过/etc/udev/rules.d/70-persistent-net.rules 里面的DEVICE=eth2,从而显示的IP地址是在eth2中,读者需要根据自己的工作环境来修改选取IP的地址的设备,适当把本文中的eth2改成eth1或者eth0或者不变。)

    知道我们的目标之后,就应该分析我们用什么工具来处理这些内容呢?
    命令grep:
    grep 则是分析一行讯息, 若当中有我们所需要的信息,就将该行拿出来。
    简单的语法是这样的:

    [dmtsai@study ~]$ grep [-acinv] [–color=auto] ‘搜寻字串’ filename
    选项与参数:
    -a :将 binary 文件以 text 文件的方式搜寻数据
    -c :计算找到 ‘搜寻字串’ 的次数
    -i :忽略大小写的不同,所以大小写视为相同
    -n :顺便输出行号
    -v :反向选择,亦即显示出没有 ‘搜寻字串’ 内容的那一行!
    –color=auto :可以将找到的关键字部分加上颜色的显示喔!

    命令 sed:
    sed 本身是一个管线命令,可以分析 standard input 的 而
    且 sed 还可以将数据进行取代、删除、新增、撷取特定行等等的功能呢!

    sed [-nefr] [动作]
    选项与参数:
    -n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到屏幕上。
    但如果加上 -n 参数后,则只有经过 sed 特殊处理的那一行(或者动作)才会被列出来。
    -e :直接在命令行界面上进行 sed 的动作编辑;
    -f :直接将 sed 的动作写在一个文件内, -f filename 则可以执行 filename 内的 sed 动作;
    -r :sed 的动作支持的是延伸型正则表达式的语法。(默认是基础正则表达式语法)
    -i :直接修改读取的文件内容,而不是由屏幕输出。
    动作说明: [n1[,n2]]function
    n1, n2 :不见得会存在,一般代表“选择进行动作的行数”,举例来说,如果我的动作
    是需要在 10 到 20 行之间进行的,则“ 10,20[动作行为] ”
    function 有下面这些咚咚:
    a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
    c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
    d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
    i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
    p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
    s :取代,可以直接进行取代的工作哩!

    而我们主要用的语法是:

    sed ‘s/要被取代的字串/新的字串/g’

    分析:

    一、处理命令Ifconfig eth2 内容:

    1、用命令“Ifconfig eth2” 输出基本内容:
    这里写图片描述
    2、用命令“| grep ‘inet ’”选出IP地址关键的一条:
    这里写图片描述
    3、 用命令 “| sed‘s/^.*addr://g’”去除IP地址前面的内容:
    这里写图片描述
    4、用命令 “sed s/Bcast.*$//g”去除IP地址后面的内容:
    这里写图片描述

    二、处理命令 ip addr show eth2内容:
    1、用命令“ ip addr show eth2” 输出基本内容:
    这里写图片描述
    2、用命令“| grep ‘inet ’”选出IP地址关键的一条:
    这里写图片描述
    3、 用命令 “| sed ‘s/^.*inet //g’”去除IP地址前面的内容:
    这里写图片描述
    4、用命令 “|sed ‘s#/24.*$##g’”去除IP地址后面的内容:
    这里写图片描述
    (注意:这里因为遇到了要过滤“/”,所以我们就不再用“s///g”命令了,用“s###g”代替,而功能上是一样的,除此之外,我们还能用“s:::g”代替。)
    这里写图片描述

    总结:

    其实本人觉得以上的做法还是有点繁琐,不排除有其他简单的方法,如果日后本人发现更简单的方法将会再次分享给大家讨论。

    展开全文
  • ifconfig ens33 |grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' ens33 代表指定的网卡设备 可以写自己机器实际的网卡名称.
    ifconfig ens33 |grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'
    

    ens33 代表指定的网卡设备
    可以写自己机器实际的网卡名称.

    展开全文
  • linux正则表达式

    2017-11-12 02:34:00
    什么是linux正则表达式: 正则表单式就是处理大量字符串而定义的规则和方法 通过正则表达式,我们可以快速的过滤,替换需要的内容 正则表达式的特点: Linux正则表达式默认以行为单位处理 Linux正则表达式,和...

    什么是linux正则表达式:

      正则表单式就是处理大量字符串而定义的规则和方法

       通过正则表达式,我们可以快速的过滤,替换需要的内容


    正则表达式的特点:

      Linux正则表达式默认以行为单位处理

      Linux正则表达式,和命令行中通配符的使用是有区别的


    linux正则表达式的使用:

      正则表达式不光应用于linux中,还包括脚步,php语言等,运用的地方不同自然正则表达式的含义也有所区别


    经常调用正则表达式的命令:

    grep:-v过滤时排除空行;-o过滤时只输出匹配内容;-E支持扩展正则表达式;-color=auto匹配的内容带颜色;-n输出过滤内容的行号

    sed:-i修改原文件;-n取消默认输出;p打印内容;s替换内容;g全局

    awk



    基础正则表达式(BRE):

    1)^q    以什么开头的内容

    2)q$    以什么结尾的内容

    3)^$    代表空行

    4).     代表任意一个字符

    5)\     代表转义字符

    6)q*    重复0个或多个它前面的字符

    7).*    配置所有字符(位数不限)

    8)^.*    任意字符开头

    9).*$    任意字符结尾

    10)[abc]  匹配其中任意一个字符

    11)[^ab]  取反

    12)q{n,m} 重复前面一个字符n-m次



    扩展正则表达式(ERE)

    13)q+   重复1个或多个前面的字符

    14)q?  重复0个或1个前面的字符

    15)q|w  代表或

    16)(q) 查找用户组信息

    17)(\s)代表空格,或也可直接用空格


    sed的替换操作:

    1)s#原数据#更新数据#  替换第一行数据

    2)s#原数据#更新数据#g 替换所有数据

    3)s#原数据##  将原数据替换为空


    接下来我们做一个实验,将ip地址从此过滤出来:

    wKiom1aRy4TA6TMdAABIF-73FTQ642.png

    1.过滤出行

    wKiom1aRzKLRmL5BAAAR5Ju38fY706.png


    2.将开头过滤

    wKioL1aRzM6h7Il4AAAQzIhLgKM334.png


    3.将结尾过滤

    wKioL1aRzM_QAiFQAAAQgFxwuy8220.png




    本文转自 红色的菠萝 51CTO博客,原文链接:http://blog.51cto.com/10460741/1733439


    展开全文
  • 正则表达式是一种字符模式,用于在查找过程中匹配制定的字符...正则表达式一般以文本行进行处理,在进行下面实例之前,先为grep命令设置—color参数:$ alias grep='grep --color=auto' 这样每次过滤出来的字符串都...

    正则表达式是一种字符模式,用于在查找过程中匹配制定的字符。

    元字符通常在Linux中分为两类:

    1. Shell元字符,由Linux Shell进行解析;
    2. 正则表达式元字符,由vi/grep/sed/awk等文本处理工具进行解析;

    正则表达式一般以文本行进行处理,在进行下面实例之前,先为grep命令设置—color参数:

    $ alias grep='grep --color=auto' 

    这样每次过滤出来的字符串都会带色彩了。

    在开始之前还需要做一件事情,就是创建一个测试用的re-file文件,内容如下:

    $ cat re-file  I had a lovely time on our little picnic.  Lovers were all around us. It is springtime. Oh  love, how much I adore you. Do you know  the extent of my love? Oh, by the way, I think  I lost my gloves somewhere out in that field of  clover. Did you see them? I can only hope love.  is forever. I live for you. It's hard to get back in the  groove. 

    正则表达式元字符

    b412ff200050c90a303b2d3a982ad2c2.png

    特殊的元字符

    a4773f6b2a66efaa5204da4210efaf20.png

    扩展的正则表达式

    699f0396cc6df2ba9687238c8e0c8b94.png

    实操

    匹配以love开头的所有行

    $ grep '^love' re-file  love, how much I adore you. Do you know 

    匹配love结尾的所有行

    $ grep 'love$' re-file  clover. Did you see them? I can only hope love. 

    匹配以l开头,中间包含两个字符,结尾是e的所有行

    $ grep 'l..e' re-file  I had a lovely time on our little picnic.  love, how much I adore you. Do you know  the extent of my love? Oh, by the way, I think  I lost my gloves somewhere out in that field of  clover. Did you see them? I can only hope love.  is forever. I live for you. It's hard to get back in the 

    匹配0个或多个空行,后面是love的字符

    $ grep ' *love' re-file  I had a lovely time on our little picnic.  love, how much I adore you. Do you know  the extent of my love? Oh, by the way, I think  I lost my gloves somewhere out in that field of  clover. Did you see them? I can only hope love. 

    匹配love或Love

    $ grep '[Ll]ove' re-file # 对l不区分大小写  I had a lovely time on our little picnic.  Lovers were all around us. It is springtime. Oh  love, how much I adore you. Do you know  the extent of my love? Oh, by the way, I think  I lost my gloves somewhere out in that field of  clover. Did you see them? I can only hope love. 

    匹配A-Z的字母,其次是ove

    $ grep '[A-Z]ove' re-file  Lovers were all around us. It is springtime. Oh 

    匹配不在A-Z范围内的任何字符行,所有的小写字符

    $ grep '[^A-Z]' re-file  I had a lovely time on our little picnic.  Lovers were all around us. It is springtime. Oh  love, how much I adore you. Do you know  the extent of my love? Oh, by the way, I think  I lost my gloves somewhere out in that field of  clover. Did you see them? I can only hope love.  is forever. I live for you. It's hard to get back in the  groove. 

    匹配love.

    $ grep 'love.' re-file  clover. Did you see them? I can only hope love. 

    匹配空格

    $ grep '^$' re-file 

    匹配任意字符

    $ grep '.*' re-file  I had a lovely time on our little picnic.  Lovers were all around us. It is springtime. Oh  love, how much I adore you. Do you know  the extent of my love? Oh, by the way, I think  I lost my gloves somewhere out in that field of  clover. Did you see them? I can only hope love.  is forever. I live for you. It's hard to get back in the  groove. 

    前面o字符重复2到4次

    $ grep 'o{2,4}' re-file  groove. 

    重复o字符至少2次

    $ grep 'o{2,}' re-file  groove. 

    重复0字符最多2次

    $ grep 'o{,2}' re-file  I had a lovely time on our little picnic.  Lovers were all around us. It is springtime. Oh  love, how much I adore you. Do you know  the extent of my love? Oh, by the way, I think  I lost my gloves somewhere out in that field of  clover. Did you see them? I can only hope love.  is forever. I live for you. It's hard to get back in the  groove. 

    重复前一个字符一个或一个以

    $ egrep "go+d" linux.txt  Linux is a good  god assdxw bcvnbvbjk  gooodfs awrerdxxhkl  good 

    0个或者一个字符

    ansheng@Ubuntu:/tmp$ egrep "go?d" linux.txt  god assdxw bcvnbvbjk  gdsystem awxxxx 

    或,查找多个字符串

    $ egrep "gd|good" linux.txt  Linux is a good  gdsystem awxxxx  good 

    分组过滤匹配

    $ egrep "g(la|oo)d" linux.txt  Linux is a good  glad  good 

    感谢支持!后台私信《Linux》获取C++/Linux后台开发进阶视频资料。

    展开全文
  • Linux正则表达式

    2020-05-11 14:14:57
    Linux正则表达式 文章目录Linux正则表达式grep与正则表达式简介grep正则表达式的类型grep的用法grep的常用选项基本正则表达式BREBRE的元字符1.字符匹配2.匹配次数3.位置锚定4.分组扩展正则表达式元字符EREERE的元...
  • linux过滤空行和注释 bash技术交流qq群:921383787 示例文本 cat > test.txt <<EOF line1 line2 line3 #line4 #line5 EOF 过滤掉文本以#注释开头的行和空行 egrep -v '^$|^#' test.txt 过滤掉以空格...
  • linux正则表达式一般以行为单位处理的。 2、为什么要学正则表达式 在企业工作中,我们每天做的linux运维工作中,时刻都会面对大量带有字符串的文本配置、程序、命令输出及日志文件等,而我们经常会有迫
  • linux 正则

    2018-11-12 11:43:00
    正则 什么是正则 正则就是一串有规律的字符串 掌握好正则对于编写shell脚本有很大帮助 各种编程语言中都有正则,原理是一样的 本章将要学习grep/egrep、sed、awk ...grep //过滤指定关键词 grep [-cinvA...
  • Linux 正则表达式

    2020-03-23 22:34:52
    1 什么是正则表达式 简单来说,正则表达式就是为了处理大量的字符串而定义的一套规则和方法 例如:假设@代表pillow,!...linux正则表达式一般以行为单位处理的。 2 为什么要学习正则表达式 ...
  • Linux正则

    2017-03-19 22:55:51
    grep,egrep,fgrep:文本过滤工具(模式:pattern) 工具; grep:基本正则表达式,-E,-F egrep:扩展正则表达式,-G,-F fgrep:不支持正则表达式, sed:stream editor,流编辑器,文本编辑工具; awk:...
  • linux 正则表达式

    2019-02-13 10:43:00
    正则表达式 标签(空格分隔):Linux实战教学笔记 ---更多资料点我查看 ...Linux正则表达式一般以行为单位处理。 简单说 为处理大量文本|字符串而定义的一套规则和方法 以行为单位出来,一次处理...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,105
精华内容 442
关键字:

linux正则过滤

linux 订阅