专栏首页从ORACLE起航,领略精彩的IT技术。任督二脉之Shell中的正则表达式cut命令awk命令sed命令sort命令wc命令

任督二脉之Shell中的正则表达式cut命令awk命令sed命令sort命令wc命令

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 实验:利用ASMLib创建ASM磁盘

    Alfred Zhao
  • RAC某节点启动遭遇ORA-01105,ORA-01606

    环境:RHEL6.5 + Oracle11.2.0.4 双节点RAC 故障现象:节点1实例没有启动成功,节点2正常启动。

    Alfred Zhao
  • 各类数据库问题描述模板

    为了更精准更有效的解决实际项目中遇到的问题,以后所有问题请按照对应问题分类的模板格式来提交问题。

    Alfred Zhao
  • Android LayoutInflater.inflate()源码流程分析

      我们在根据layout文件得到View的时候都会使用LayoutInflater.from(mContext).inflate().下面我们来分析这个获取V...

    曾大稳
  • linux最后一次试验

    柴银磊
  • 在 Snapchat 工作是怎样一番体验?

    去snapchat访问过几次,另外很多前同事去了Snapchat,我来说一下和他们聊了之后得到的感受。 1. Snapchat 的工作很累,他们普遍反映比Fa...

    春哥大魔王
  • 可信执行环境的定义及实现形态

    一般认为,最早给出可信执行环境定义的是OMTP(Open Mobile Terminal Platform)这个组织,其在2009年其在《omtpadvance...

    安智客
  • 锐捷路由技术 | ISIS技术详解与配置

    IS-IS,即中间系统(IntermediateSystem)到中间系统的域内路由信息交换协议,它最初是由国际标准化组织ISO为它的无连接网络协议设计的一种动态...

    网络技术联盟站
  • 小程序JS动态修改样式

    先写一个不怎么好看的demo,通过点击事件来控制view的元素属性,把背景改变成蓝色。

    祈澈菇凉
  • 高可用集群基本概念与heartbeat文本配置接口

    一、高可用集群基本概念: 什么是高可用集群: 所谓高可用集群,就是在出现故障时,可以把业务自动转移到其他主机上并让服务正常运行的集群构架 > 高...

    小小科

扫码关注云+社区

领取腾讯云代金券