第十三天-linux正则表达式及重点命令

正则表达式:
  简单的说,正则表达式就是一套处理字符串的规则和方法,以行为单位对字符串进行处理,通过特殊的符号辅助,我们可以快速的过滤,替换某些特定的字符串。
  运维工作中,会有大量的访问日志,错误日志。如何能快速的过滤出我们需要的内容,这就要靠正则表达式。
  awk,sed,grep(egrep)linux三剑客想要工作的更高效,那么一定离不开正则表达式的配合。
  我们想要玩好三剑客,主要是awk,sed,grep。三剑客的正则表达式。

正则表达式实际就是一些特殊的字符,赋予了他特等的含义。
1)^word        搜索以word开头的
2)word$        搜索以word结尾的
3).              代表且只能代表任意一个字符
4)\                 转义字符,转义符号,让有着特殊身份意义的字符,脱掉马甲,还原原型。
5)*                 重复0个或多个前面的一个字符
6).*                匹配所有字符。^.*以任意多个字符开头
7)[]                字符集合,重复特殊字符的符号
8)[^word]       匹配不包含^后的任意字符的内容
9)a\{n,m\}      重复n到m次,前一个字符
    \{n,\}          重复至少n次,前一个字符
    \{n\}           重复n次,前一个字符

扩展的正则表达式:ERE
1)+                重复一个或一个以上前一个字符
2)?                重复0个或0以上个前面的字符
3)|                 用或的方式查找多个字符串
实战例题
1.如何取得/etiantian文件的权限对应的数字内容,如-rw-r--r--为644,要求使用命令取得644或0644这样的数字。

方法1:
[email protected]:~/test$ ll etiantian
-rw-r--r-- 1 xiaorui xiaorui 0 11月 25 21:28 etiantian
[email protected]:~/test$ ll etiantian |cut -c 2-10
rw-r--r--
[email protected]:~/test$ ll etiantian |cut -c 2-10|tr rwx- 4210
420400400
[email protected]:~/test$ ll etiantian |cut -c 2-10|tr rwx- 4210|awk -F "" ‘{print $1}‘
4
[email protected]:~/test$ ll etiantian |cut -c 2-10|tr rwx- 4210|awk -F "" ‘{print $1+$2+$3 $4+$5+$6 $7+$8+$9}‘
644
方法2:
[email protected]:~/test$ stat etiantian
  文件:"etiantian"
  大小:0             块:0          IO 块:4096   普通空文件
设备:802h/2050d    Inode:23200567    硬链接:1
权限:(0644/-rw-r--r--)  Uid:( 1000/ xiaorui)   Gid:( 1000/ xiaorui)
最近访问:2015-11-25 21:28:48.071446235 +0800
最近更改:2015-11-25 21:28:48.071446235 +0800
最近改动:2015-11-25 21:29:07.707803664 +0800
创建时间:-
[email protected]:~/test$ stat etiantian |sed -n ‘4p‘|awk -F ‘[(/]‘ ‘{print $2}‘
0644
方法3:
[email protected]:~/test$ stat etiantian |awk -F ‘[(/]‘ ‘NR==4 {print $2}‘
0644
方法4:
[email protected]:~/test$ stat etiantian |head -4|tail -1|awk -F ‘[(/]‘ ‘{print $2}‘
0644

2.linux下通过mkdir命令创建一个新目录/home/xiaorui/ett,ett的硬链接数是多少,为什么?
 在ett下再创建一个test目录,ett的硬链接数又是多少?为什么?

[email protected]:~$ mkdir ett
[email protected]:~$ ls -ld ett/
drwxrwxr-x 2 xiaorui xiaorui 4096 11月 25 22:15 ett/
[email protected]:~$ cd ett/
[email protected]:~/ett$ mkdir test
[email protected]:~/ett$ ls -ld ../ett/
drwxrwxr-x 3 xiaorui xiaorui 4096 11月 25 22:16 ../ett/
[email protected]:~/ett$ ll -i
24512863 drwxrwxr-x  3 xiaorui xiaorui 4096 11月 25 22:16 ./
23068674 drwxr-xr-x 34 xiaorui xiaorui 4096 11月 25 22:15 ../
24512865 drwxrwxr-x  2 xiaorui xiaorui 4096 11月 25 22:16 test/
[email protected]:~/ett$ ll -id /home/xiaorui/ett/
24512863 drwxrwxr-x 3 xiaorui xiaorui 4096 11月 25 22:16 /home/xiaorui/ett//
[email protected]:~/ett/test$ ls -lai
24512865 drwxrwxr-x 2 xiaorui xiaorui 4096 11月 25 22:16 .
24512863 drwxrwxr-x 3 xiaorui xiaorui 4096 11月 25 22:16 ..

当新创建一个目录时,此目录的硬链接数为2这是因为:
1、创建的目录本身为一个硬链接。
2、目录ett下隐藏目录.(点号)为创建目录的有一个硬链接,因此其硬链接数为2。
  当在新创建目ett下再创建一个目录test时,ett目录的硬链接数为3,这是因为,在新创建的test目录下有一个隐藏..(两个点号)为ett的又一个硬链接。

3.请执行命令取出linux中wlan0的IP地址(请用cut,有能力者也可分别用awk,sed命令答)。

方法1:
[email protected]:~$ ifconfig wlan0|grep "inet"
          inet 地址:192.168.1.111  广播:192.168.1.255  掩码:255.255.255.0
          inet6 地址: fe80::162d:27ff:fefd:c215/64 Scope:Link
[email protected]:~$ ifconfig wlan0|grep "inet "
          inet 地址:192.168.1.111  广播:192.168.1.255  掩码:255.255.255.0
[email protected]:~$ ifconfig wlan0|grep "inet "|awk ‘{print $2}‘
地址:192.168.1.111
[email protected]:~$ ifconfig wlan0|grep "inet "|awk ‘{print $2}‘|awk -F ‘:‘ ‘{print $2}‘
192.168.1.111
方法2:
[email protected]:~$ ifconfig wlan0|grep "inet "|cut -d ‘:‘ -f2
192.168.1.111  广播
[email protected]:~$ ifconfig wlan0|grep "inet "|cut -d ‘:‘ -f2|cut -d ‘ ‘ -f1
192.168.1.111
方法3:
[email protected]:~$ ifconfig wlan0|grep "inet "|awk -F "[ :]" ‘{print $13}‘
192.168.1.111
方法4:
[email protected]:~$ ifconfig wlan0|grep "inet "|awk -F "[ :]+" ‘{print $4}‘
192.168.1.111
方法5:
[email protected]:~$ ifconfig wlan0|awk -F "[ :]+" ‘NR==2{print $4}‘
192.168.1.111
方法6:
[email protected]:~$ ifconfig wlan0|sed -n ‘2p‘|sed  ‘s#^.*地址:##g‘|sed ‘s# 广播:.*$##g‘
192.168.1.111 

4.请给出默认情况下eth0网卡配置文件的路径及客户端DNS的路径。
     eth0网卡配置路径:/etc/sysconfig/network-scripts/ifcfg-eth0
     客户端DNS的路径 :/etc/resolv.conf

5.推荐老男孩老师两篇博文:
  Linux系统基础网络配置老鸟精华篇
  深入浅出route命令小结
  

时间: 11-26

第十三天-linux正则表达式及重点命令的相关文章

第十三天(linux常用的基础命令 )

按照下面的要求创建一个新的逻辑卷:    *) 逻辑卷命名为database, 属于 datastore 卷组.    *) 在 datastore卷组中的逻辑卷,500M.    *)使用{ext3|ext4|xfs}文件系统对新的逻辑卷进行格式化    *)逻辑卷应该在系统启动的时候自动挂载在/mnt/database 目录下.    *)lvm扩大至1G, 并且保留其原有资料的完整性; 新增加一个 SWAP 分区    *) 大小为512MB,    *) 使该 SWAP 能够每次开机生效

正则表达式和grep命令的用法

正则表达式和grep命令的用法: 一.正则表达式: 正则表达式(也称为regular Expression,简称RE)就是由普通字符(例如字符a到z)以及特殊字符(称之为元字符)组成的文字模式. 该模式描述在查找文字主体时待匹配的一个或多个字符串. 正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.简单的说,正则表示式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表示通过一些特殊符号的辅助,可以让使用者轻易的达到搜寻/删除/取代某特定字符串的处理程序.vim.gr

Linux正则表达式grep与egrep

Linux正则表达式grep与egrep 正则表达式:它是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.在很多文本编辑器或其他工具里,正则表达式通常被用来检索或替换那些符合某个模式的文本内容.其实正则表达式,只是一种思想,一种表示方法.只要我们使用的工具支持表示这种思想那么这个工具就可以处理正则表达式的字符串.常用的工具有grep, sed, awk,这三个都是针对文本的行才操作的. grep  过滤器语法: grep  [-cinvABC]  'word'  filenam

Shell编程基础教程5--文本过滤、正则表达式、相关命令

5.文本过滤.正则表达式.相关命令    5.1.正则表达式(什么是正则表达式?正则表达式怎么进行匹配?常用命令)        简介:            一种用来描述文本模式的特殊语法            由普通字符(例如字符a到z)以及特殊字符(成为元字符,如/.*.?等)组成            匹配的字符串            文本过滤工具在某种情况下都支持正则表达式        基本元字符集及其含义            ^    只匹配行首,例子 ^a 表示匹配以a开头的

攻城狮在路上(叁)Linux(二十三)--- linux磁盘参数修改(设备代码、设备名)

一.mknod:设置设备代码 linux中,所有的设备都是用文件来表示,文件通过major与minor数值来判断. major为主设备代码,minor为设备代码(需要查询),示例如下: /dev/hda ---------major:3------minor:0~63 /dev/hdb----------major:3------minor:64~127 /dev/sda----------major:8------minor:0~15 ... 命令格式:mknod 设备名 [bcp] [maj

正则表达式与grep命令

一.引言 介绍Linux系统中的两个命名:grep,egrep.要想使用这2个命令要先学会使用正则表达式,在介绍正则表达式之前,先说明一下,大家都熟知的在word中使用的通配符,即: *:表示任意长度任意字符. ?:表示任意单个字符. 记住上面这两个字符所表示的意思,后面还会在正则表达式里出现,但意义不同. 1.正则表达式:Regular Expression,REGEXP 由一类特殊字符及文本字符所编写的模式,其有些字符不表示字面意义,而是用于表示控制或通配的功能: 元字符分两类: 基本正则表

linux基础之grep命令

Linux基础之grep命令 grep命令是linux下的行过滤工具,参数繁多,功能比较强大,用起来比较方便,下面就将grep及其egrep分模块讲述其功能. 1.Grep:根据模式搜索文本,并将符合模式的文本行显示出来 2.Grep的语法:Grep  [option]   PATTERN  [file-] Pattern: 文本字符和正则表达是元字符组合而成匹配条件 3.grep的常用选项: -i: 不区分字符的大小写(只适用于单字符): -I:字符的大写: --color: 匹配的串用高亮颜

linux下修改rm命令防止误删除

前言:相信很多朋友都遇到过在linux下用rm命令误删除文件的时候,此刻的心中仿佛有无数的羊驼在奔腾.那么怎么防止这种情况发生呢?当然是有方法的,我们可以写一个shell脚本,改变一下rm命令的作用. 第一步: 先在home目录下创建一个叫username名字的目录(当然名字可以自定义),具体命令为:sudo mkdir username(自定义的名字) 这时候记得要用命令:sudo chmod 777 username(自定义的名字)来改变一下你的目录权限,因为在home目录下刚创建的目录是没

linux正则表达式的使用

正则表达式的使用 1.1 创建环境 cat >q.txt<<EOF oldboy  oldboy hellooldboy hellooldboy awkoldboy  awkoldboy sedoldboy sedoldboy oldboyedu oldboyedu EOF 取出只有oldboy的行 grep "\boldboy\b" q.txt 实例1-1反向引用 [[email protected]~]# #####第一个里程碑-反向引用(先保护起来,然后使用)