轻松学习之Linux教程六 正則表達式具体解释
本系列文章由@超人爱因斯坦出品。转载请注明出处。
作者:超人爱因斯坦 个人站点:http://www.hpw123.net
文章链接:http://hpw123.net/a/Linux/Linuxjichu/2014/1101/104.html
邮箱: 424346976@qq.com
CSDN:http://blog.csdn.net/u010283694
正則表達式是一些特殊字符的排列,用以查找、替换、删除一些或多行文字字符串。简单的说,正則表達式就是用在字符串的处理上面的一项“表达式”使用它真的非常方便,所以好好学习吧,真的非常实用呢。
好了,让我们进入主题吧:
一.正則表達式
1.什么是正則表達式
正則表達式基本上是一种“表示法”,仅仅要工具程序支持这样的表示法,那么该工具程序就能够用来作为正則表達式的字符串处理之用。
比如vi,grep,,awk,sed等工具,由于它们有支持正則表達式
2.语系对正則表達式的影响
使用正則表達式时。须要特别留意当时环境的语系为何,否则可能会发现与别人不同样的选取结果
因为一般我们在练习正則表達式时,使用的是兼容POSIX的标准,因此就使用“C”这个语系,另外。为了要避免这样编码所造成的英文与数字的选取问题,因此有些特殊的符号我们须要了解,例如以下

3.基础正則表達式字符(characters)



4.grep。sed使用
语法:
[root@www ~]# grep [-A] [-B] [--color=auto] '搜寻字符串' filename
选项參数: -A :后面可加数字。为 after 的意思,除了列出该行外,兴许的 n 行也列出来;
-B :后面可加数字。为 befer 的意思。除了列出该行外,前面的 n 行也列出来; --color=auto 可将正确的那个选取数据列出颜色
[root@www ~]# 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 :替换。能够直接进行替换的工作哩! 通常这个 s 的动作能够搭配正則表達式!比如 1,20s/old/new/g 就是啦!
案例:
步骤一:先观察原始信息,利用 /sbin/ifconfig 查询 IP 为何?
[root@www ~]# /sbin/ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:90:CC:A6:34:84
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::290:ccff:fea6:3484/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 .....
(下面省略).....
步骤二:利用关键词配合 grep 选取出关键的一行数据
[root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr'
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
# 当场仅剩下一行!接下l来,我们要将開始到 addr: 通通删除。就是像底下这样:
# inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 # 上面的删除关键在于『 ^.*inet addr: 』啦!正則表達式出现。 ^_^
步骤三:将 IP 前面的部分予以删除
[root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | \ > sed 's/^.*addr://g'
192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
# 细致与上个步骤比較一下,前面的部分不见了! 接下来则是删除兴许的部分,即:
# 192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
# 此时所需的正則表達式为:『 Bcast.*$ 』就是啦。
步骤四:将 IP 后面的部分予以删除
[root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | \ > sed 's/^.*addr://g' | sed 's/Bcast.*$//g'
192.168.1.100 #还有一个样例
利用 sed 将 regular_express.txt 内每一行结尾若为 . 则换成 !
[root@www ~]# sed -i 's/\.$/\!/g' regular_express.txt
# 上头的 -i 选项能够让你的 sed 直接去改动后面接的文件内容而不是由屏幕输出喔!
5.扩展正則表達式

二.文件的格式化及相关处理
1.格式化打印:printf
语法:
[root@www ~]# printf '打印格式' 实际内容
选项參数:
关于格式方面的几个特殊样式:
\a 警告声音输出
\b 退格键(backspace)
\f 清除屏幕 (form feed)
\n 输出新的一行
\r 即 Enter 按键
\t 水平的 [tab] 按键
\v 垂直的 [tab] 按键
\xNN NN 为两位数的数字,能够转换数字成为字符。 关于 C 程序语言内。常见的变量格式
%ns 那个 n 是数字, s 代表 string 。即多少个字符。
%ni 那个 n 是数字, i 代表 integer 。即多少整数字数;
%N.nf 那个 n 与 N 都是数字, f 代表 floating (浮点)。假设有小数字数, 假如我共要十个位数,但小数点有两位,即为 %10.2f 啰!
案列:
将 (printf.txt) 内容仅列出姓名与成绩:(用 [tab] 分隔)
[root@www ~]# printf '%s\t %s\t %s\t %s\t %s\t \n' $(cat printf.txt)
Name Chinese English Math Average
DmTsai 80 60 92 77.33
VBird 75 55 80 70.00
Ken 60 90 70 73.33
2.awk:好用的数据处理工具
awk也是一个很棒的数据处理工具。相比于sed经常作用于一整行的处理,awk则比較倾向于将一行分成数个“字段"来处理,因此。awk相当适合处理小型的数据数据处理呢,awk通常的执行的模式是这种
[root@www ~]# awk '条件类型1{动作1} 条件类型2{动作2} ...' filename
awk内置变量

案例:
[root@www ~]# last -n 5| awk '{print $1 "\t lines: " NR "\t columes: " NF}'
root lines: 1 columes: 10
root lines: 2 columes: 10
root lines: 3 columes: 10
dmtsai lines: 4 columes: 10
root lines: 5 columes: 9
# 注意喔,在 awk 内的 NR, NF 等变量要用大写,且不须要有 $ 啦!
awk的逻辑运算符(用于条件推断)

——————————超人爱因斯坦于2014年11月01日更新
ok,今天的内容大概就是这些,假设有什么写的不正确的。求大神指正。我们下篇文章见:)
呵呵。让我们轻松一下吧 正能量
很多其它文章尽在:www.hpw123.net
轻松学习之Linux教程六 正則表達式具体解释的更多相关文章
- 鸟书shell 学习笔记(二) shell中正則表達式相关
通配符与正則表達式的差别 通配符是bash原生支持的语法,正則表達式是处理字符串的一种表示方式, 正則表達式须要支持的工具支持才干够 语系设置 : export LANG=C grep alias 设 ...
- 使用正則表達式的格式化与高亮显示json字符串
使用正則表達式的格式化与高亮显示json字符串 json字符串非常实用,有时候一些后台接口返回的信息是字符串格式的,可读性非常差,这个时候要是有个能够格式化并高亮显示json串的方法那就好多了,以下看 ...
- JavaScript正則表達式知识汇总
Js 正則表達式知识汇总 正則表達式: 1.什么是RegExp?RegExp是正則表達式的缩写.RegExp 对象用于规定在文本中检索的内容. 2.定义RegExp:var +变量名=new RegE ...
- vim中使用正則表達式
一.使用正則表達式的命令 使用正則表達式的命令最常见的就是 / (搜索)命令. 其格式例如以下: /正則表達式 还有一个非常实用的命令就是 :s(替换)命令,将第一个//之间的正則表達式替换成第二个/ ...
- python re 正則表達式
夜深了.敲击键盘.用CSDN整理下python re 正則表達式是含有文本和特别字符的字符串,这些文本和特别字符描写叙述的模式能够识别各种字符串. 一下我们从实例结合理论来学习理解吧... 经常使 ...
- Python——正則表達式(2)
本文译自官方文档:Regular Expression HOWTO 參考文章:Python--正則表達式(1) 全文下载 :Python正則表達式基础 ======================== ...
- 轻松学习JavaScript十四:JavaScript的RegExp对象(正則表達式)
一RegExp对象概述 RegExp对象表示正則表達式,RegExp是正則表達式的缩写.它是对字符串运行模式匹配的强大工具. RegExp 对象用于规定在文本中检索的内容. 当您检索某个文本时.能够使 ...
- JAVA学习第六十五课 — 正則表達式
正則表達式:主要应用于操作字符串.通过一些特定的符号来体现 举例: QQ号的校验 6~9位.0不得开头.必须是数字 String类中有matches方法 matches(String regex) 告 ...
- python 学习笔记 10 -- 正則表達式
零.引言 在<Dive into Python>(深入python)中,第七章介绍正則表達式,开篇非常好的引出了正則表達式,以下借用一下:我们都知道python中字符串也有比較简单的方法, ...
随机推荐
- C#面试-总结
1.override,overload的区别(鲁班联盟面试题) 笔试场景: 当时写反了区别 正确答案: override(重写,覆盖) 1.方法名.参数.返回值相同. 2.子类方法不能缩小父类方法的访 ...
- 高性能JavaScript模板引擎原理解析
随着 web 发展,前端应用变得越来越复杂,基于后端的 javascript(Node.js) 也开始崭露头角,此时 javascript 被寄予了更大的期望,与此同时 javascript MVC ...
- <2>集腋成裘
标量项: [root@wx03 2]# cat a1.pl unshift(@INC,"/root/big/2"); use Horse;; print $Horse::days; ...
- Google用户登录界面 Android实现
实验效果: 项目目录: Java代码(放在Src文件下) package com.bn.chap9.login; import java.io.BufferedReader; import java. ...
- CSDN改版问题多多
刚刚上CSDN,发现改版了,推出C币功能. 然后看了2分钟,发现了一个Bug,于是准备提交到论坛.但是--居然提交Bug的论坛也出现Bug.印象中,每次CSDN更新版本号Bug都非常多,这,作为程序猿 ...
- MSSQL - 自增1的标识列一次增长了1000
@情若天_RunUp: 1. Open "SQL Server Configuration Manager"2. Click "SQL Server Services&q ...
- 查看 ios 真机调试log,导出log
使用Xcode 在模拟器李敏运行的时候,可以直接通过xcode 查看log,但是真机测试的时候,xcode 却无法获取到,对于日志输出,可以先保存到真机上,之后通过iTunes 导出即可 修改源码 此 ...
- 在 SSIS package 中使用FTP
在ssis 包中使用FTP 实际上很简单, 直接拿一个FTP控制流(FTP 任务) ,配置一下FTP 服务器就可以了, 但是当我想在SQL Server Job 中使用这个功能时却报了个错(如下), ...
- Eclipse中快捷键的使用
1:引入包 ctrl+shift+o 2:对输入进行提示:Alt+/ 3: 全局搜索:crtrl + h 4:Eclipse创建方法快捷键Alt+shift+M 5:Eclipse创建局部变量快捷 ...
- 14.5.2 Changing the Number or Size of InnoDB Redo Log Files 改变InnoDB Redo Log Files的数量
14.5.2 Changing the Number or Size of InnoDB Redo Log Files 改变InnoDB Redo Log Files的数量 改变InnoDB redo ...
