VBird说学习Linux,掌握了Shell和正则就相当于打通了任督二脉,此后能力的成长才会突飞猛进。

Shell的基础学习之前已经总结了一篇博客:http://www.cnblogs.com/jyzhao/p/4485553.html

本文将总结Shell中的正则表达式及常用的字符处理命令,为打通任督二脉奠定基础_

  1. 基础正则表达式举例说明
  2. 字符截取命令
  3. 字符处理命令

1. 基础正则表达式举例说明

`*`,`.`,`\`,`^word`,`word$`,`[list]`,`[^list]`,`[n1-n2]`,`\{n\}`,`\{n,m\}`

例1:简易判断日期格式

比如:2015-05-11,只是简单判断数字的格式。

^[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}$

例2:简易判断IP地址格式

比如:192.168.1.100,只是简单判断数字的格式。

[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}

例3:找出1.txt文本文件中以字母开头的以及不是以字母开头的行。

以字母开头的行:

grep --color=auto "^[a-z,A-Z]" 1.txt

不是以字母开头的行:

grep --color=auto "^[^a-z,A-Z]" 1.txt

2. 字符截取命令

cut命令

用途:对于分隔符规范的文本进行特定截取某些列,特点是简单易用。

例4:cut截取出用户名以及对应的uid,gid,过滤掉包含'/sbin'的行。

grep -v "/sbin" /etc/passwd | cut -f 1,3,4 -d ":"

截取结果示例:

root:0:0
oracle:500:500
grid:501:500

awk命令

用途:对于分隔符不规范的文本进行截取,特点是功能强大,语法比cut命令复杂。

awk '条件类型1{动作1}条件类型2{动作2} ...' filename
  1. awk的内置变量:
NF 每一行($0)拥有的字段总数
NR 目前awk所处理的是“第几行”数据
FS 目前的分隔字符,默认是空格键
  1. awk的逻辑运算符:

    >, <, >=, <=, ==, !=

例5:查询pmon进程的PID。

ps -ef | grep pmon | grep -v grep | awk '{print $2}'

例6:打印出/etc/passwd中uid<3的用户和他们的uid。

cat /etc/passwd | awk 'BEGIN{FS=":"} $3 < 3 {print $1 "\t" $3}'

注:注意BEGIN在这里的用途,没有BEGIN第一行显示会不正确。

例7:截取出系统根目录的磁盘空间使用率

df -h | awk '{print $5}'|cut -f 1 -d "%"

sed命令

sed可以将数据进行替换、删除、新增、选取特定行。

-n 只有经过sed处理的才显示(默认显示全部)
-e 直接在命令行模式上进行sed的动作编辑
-f 将sed的动作写入一个文件,然后-f filename执行filename中的sed命令
-r 支持扩展型正则表达式语法(默认是基础正则表达式语法)
-i 直接修改读取的文件内容,而不是默认的屏幕输出结果

例8:显示行号并打印出/etc/hosts,删除文件的前两行。

nl /etc/hosts | sed '1,2d'

例9:把/etc/hosts文件中的JY-DB全部替换为Alfred-DB显示出来

sed -e 's/JY-DB/Alfred-DB/g' /etc/hosts

注:此处不写-e参数也可以,如果两个及以上sed命令需要每个前面都写-e参数。

例10:直接修改/etc/hosts文件,在文件的第2行下插入新的一行“192.168.1.100 JY-DB”

sed -i '2a 192.168.1.100 JY-DB' /etc/hosts

3. 字符处理命令

sort命令

用途:对结果进行排序显示。

du -sk * | sort -rn

sort -t ":" -k "3,3" /etc/passwd

sort -n -t ":" -k "3,3" /etc/passwd

wc命令

用途:统计结果行,单词,字符的数量。

统计行wc -l

例11:统计oracle的用户进程数

ps -ef | grep LOCAL=NO | grep -v grep | wc -l

统计单词wc -w

例12:统计/etc/issue文件的单词数

wc -w /etc/issue

统计字符wc -m

例13:统计/etc/issue文件的字符数

wc -m /etc/issue

任督二脉之Shell中的正则表达式的更多相关文章

  1. 一个典型的后台软件系统的设计复盘——(三)打通任督二脉-context

    武侠小说练功讲究打通任督二脉.程序设计练到一定程度也讲究打通任督二脉.好奇心强的同学可以搜搜“打通任督二脉有什么感觉”. spring的任督二脉ApplicationContext 最经典的任督二脉莫 ...

  2. 天河微信小程序入门《三》:打通任督二脉,前后台互通

    原文链接:http://www.wxapp-union.com/forum.php?mod=viewthread&tid=505&extra=page%3D1 天河君在申请到https ...

  3. Linux就这个范儿 第13章 打通任督二脉

    Linux就这个范儿 第13章 打通任督二脉 0111010110……你有没有想过,数据从看得见或看不见的线缆上飞来飞去,是怎么实现的呢?数据传输业务的未来又在哪里?在前面两章中我们学习了Linux网 ...

  4. English learning method ---学英语重中之重打通“任督二脉”

    漫漫十年艰辛路,英语学习之旅 曾经秉承“路漫漫其修远兮,吾将上下而求索”的信念,初一那年了解到原来(a b c d e f g) 不仅仅读作(啊,波,词,的,额,佛,哥),在英语的世界中它有另外的读法 ...

  5. Appium+python自动化(十)- 元素定位秘籍助你打通任督二脉 - 上卷(超详解)

    简介 你有道灵光从天灵盖喷出来你知道吗,年纪轻轻就有一身横练的筋骨,简直百年一见的练武奇才啊,如果有一天让你打通任督二脉,那还不飞龙上天啊.正所谓我不入地狱谁入地狱,警恶惩奸维护世界和平这个任务就交个 ...

  6. 深度讲解Linux内存管理和Linux进程调度-打通任督二脉

    我在多年的工程生涯中发现很多工程师碰到一个共性的问题:Linux工程师很多,甚至有很多有多年工作经验,但是对一些关键概念的理解非常模糊,比如不理解CPU.内存资源等的真正分布,具体的工作机制,这使得他 ...

  7. K2 BPM_当K2遇上医药,用流程打通企业的任督二脉_业务流程管理系统

    据调查,如今仍有60%的医药企业,存在合规经营和利润下降的困扰,在“研”.“产”.“供”.“销”的运营过程中,时时伴随着严苛的管理政策和法规.如何加强企业跨部门.跨组织.跨业务线的执行能力,始终是管理 ...

  8. TCP的慢启动、拥塞避免、重传、快恢复乱七八糟总是记不清?11个连环问让你一次性打通任督二脉

    摘要:如果你的开发过程涉及数据传输,一直在重传.超时之类的方案里有困惑的话,不妨重新学一学可靠性最精致的TCP协议. 本文分享自华为云社区<TCP的慢启动.拥塞避免.重传.快恢复乱七八糟总是记不 ...

  9. linux学习的任督二脉-进程调度和内存管理

    转自 宋宝华老师的博客原文:https://blog.csdn.net/21cnbao/article/details/77505330 内功心法 学习或遇到问题时,反过来主动思考如果我是设计者,我会 ...

随机推荐

  1. java 调用 .net webservice 示例

    String url="http://IP:端口/LisService.asmx"; String methodName="GetLisResultForBlood&qu ...

  2. 基于SlidePanelLayout实现ResideMenu

    同步发表于http://avenwu.net/2015/02/24/custom_slide_panel_layout_as_reside_style_on_dribble_and_qq Fork o ...

  3. 生成二维码 打上自定义logo

    private void RenderQrCode(string Code) { try { string level = "Q"; string url = ZConfig.Ge ...

  4. Mysql数据备份与恢复

    REM INIT→既に指定したファイルが有った場合, 上書きする REM NORECOVERY→接続先データベースへの既存の接続を閉じる REM REPLACE→既存のデータベースを上書きする set ...

  5. 在 Excel 中使用正则表达式进行查找与替换

    在 Excel 中,使用 Alt+F11 快捷键打开 VBA 项目窗口,在左侧的工作表名称上点右键,选择查看代码,即可出出现右侧的代码编辑窗口 在代码窗口中输入以下代码: Private Sub Re ...

  6. Spring4 MVC Hibernate4集成

      Spring4 MVC Hibernate4集成 一.    本文所用环境 Spring4.0.3.RELEASE Hibernate4.3.5.Final Mysql 二.    工程目录 三. ...

  7. 高性能优化Web前端

    高性能HTML 一.避免使用iframe iframe也叫内联frame,可将一个HTML文档嵌入另一个HTML文档中. iframe的好处是,嵌入的文档独立于父文档,通常也借此使浏览器模拟多线程.缺 ...

  8. Mobilize.Net Silverlight bridge to Windows 10 UWP

    Windows UWP 既 Windows 10 Universal Windows platform,这个微软基于Windows NT内核的个运行时(Runtime)平台,此平台横跨所有的 Wind ...

  9. 3种归并操作js代码

    /**良哥的*/ function merge(a, b) { var aLen = a.length, bLen = b.length, maxLen = Math.max(aLen, bLen), ...

  10. 对Joint Training of Cascaded CNN for Face Detection一文的几点疑惑

    最近读了Joint Training of Cascaded CNN for Face Detection这篇论文,论文中把之前人脸检测使用到的cascade cnn,从分开训练的模式,改为了联合训练 ...