linux grep截取字符数,Linux grep命令用法详解
grep: Global search regular expression and print out the line.
作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文件逐行进行匹配检查,打印匹配的行
模式:由正则表达式的元字符及文本字符所编写出的过滤条件
grep [OPTIONS] PATTERN [FILE…]
OPTIONS:
--color=auto:对匹配到的文本着色后高亮显示
-i, --ignore-case:忽略字符的大小写
-o, --only-matching:仅显示匹配到的字符串本身
-v, --invert-match:显示不能被模式匹配到的行
-E, --extended-regexp:支持使用扩展的正则表达式元字符
-q, --quiet, --silent:静默模式,即不输出任何信息
-A #:after,显示匹配到行和向后#行
-B #:before,显示匹配到行和前#行
-C #:context,显示匹配到行和前后各#行
正则表达式分为两种:1.基本正则表达式 2.扩展正则表达式
PATTERN,正则表达式(这里用到是基本正则表达式)
基本正则表达式有四种匹配模式:1.字符匹配 2.匹配次数 3.位置锚定 4.分组及应用
1.字符匹配:
.(英文的点):匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
特殊:[:digit:]、[:lower:]、[:upper:]、[:alpha:]、[:alnum:]、[:punct:]、[:space:]
2.匹配次数:
*:匹配其前面的字符任意次(0,1,多次)
.*:匹配任意长度的任意字符
\?:匹配其前面的字符0次或1次,即其前面的字符是可有可无的
\+:匹配其前面的字符1次或多次,即其面的字符要出现至少1次
\{#\}:匹配其前面的字符#次
\{m,n\}:匹配其前面的字符至少m次,至多n次
\{0,n\}:至多n次
\{m,\}:至少m次
3.位置锚定
^:行首锚定,用于模式的最左侧
$:行尾锚定,用户模式的最右侧
^PATTERN$:用于parrern来匹配整行
^$:空白行
^[[:space:]]*$:空行或包含空白字符的行
\
\>或\b:词尾锚定,用于单词模式的右侧
\:匹配完整单词
4.分组及应用:
\(\):将一个或多个字符捆绑在一起,当做一个整体进行处理
note:分组括号中的模式匹配到的内容会被正则表达式引擎自动记录于内部的变量中
\1:模式从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符
\2:模式从左侧起,第二个左括号以及与之匹配的右括号之间的模式所匹配到的字符
例题:
1.显示/etc/passwd文件中不以/bin/bash结尾的行
grep -v "/bin/bash$" /etc/passwd
2.找出/etc/passwd文件中两位数或三位数
grep '[1-9]\{1,2\}[1-9]' /etc/passwd
3.找出/etc/rc.d/rc.sysinit或/etc/grub2.cfg文件中,以至少一个空白字符开头,且后面非空白字符的行
grep '^[[:space:]]\+[[:alpha:]]' test.txt
4.找出”netstat -tan”命令的结果中以’LISTEN’后跟0,1或多个空白字符结尾行
netstat -tan | grep 'LISTEN[[:space:]].*$'
5.创建test.txt文件内容如下:
He love his lover
He likes his lover
She likes her liker
She loves her liker
查找单词中出现 l和e之间存在两个字符,且一行中要出现两次查找到的内容。
grep '\(l..e\).*\1' test.txt
egrep命令:支持扩展的正则表达式实现类似于grep文本过滤功能
egrep [OPTIONS] PATTERN [FILE...]
OPTIONS
-l, -o, -v, -q, -A, -B, -C(跟上述的grep功能一样,这里就不再累述)
-G:支持基本正则表达式
PATTERN,正则表达式(这里的正则表达式用到是扩展表达式)
扩展正则表达式也有四种匹配模式:1.字符匹配 2.匹配次数 3.位置锚定 4.分组及应用
字符匹配和位置锚定跟grep用法一样这里不再累述
次数匹配:用法还是跟上述一样。但是扩展正则表达式?,+,{,}不需要用\来转义
分组及引用:用法还是跟上述一样。但是扩展正则表达式括号不需要用\来转义。还有新的一个功能 或(|) 。例如 (c|C)at:cat或者Cat
例题:
1.找出/proc/meminfo文件中,所有在大写或小写S开头的行,至少有两种实现方式
egrep "^(S|s)" /proc/meminfo
egrep ^[Ss] /proc/meminfo
2.显示当前系统上root、Python、maintain用户的相关信息
egrep ^\(root\|python\|maintain\) /etc/passwd
3.找出/etc/rc.d/init.d/functions文件中某单词后面跟一个小括号的行
grep "[[:alpha:]]\+(" /etc/rc.d/init.d/functions
egrep '[[:alpha:]]\+|\)|\(' /etc/rc.d/init.d/functions
4.使用echo命令输出一绝对路径,使用egrep取出几名
echo /home/maintain/test.txt | grep -E -o "[^/]+/?$"
5.进一步:取出其路径名;类似于对执行dirname命令结果
找出ifconfig命令结果中的1-255之间的数值
ifconfig eth0 | egrep -o "[1-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]"
6.添加用户bash,testbash,basher以及nologin(其中shell为/sbin/nologin),而后找出/etc/passwd文件中用户名同shell名行
egrep "(^[[:alnum:]]+\>).*\1$" /etc/passwd
扩展题:找出ifconfig命令结果中的IP地址
ifconfig eth0 | grep "inet " | sed 's/[[:space:]]\+inet //' | sed "s/ .*//"
fgrep命令:不支持正则表达式元字符
当无需要用到元字符去编写模式时,使用fgrep必能更好
linux grep截取字符数,Linux grep命令用法详解相关推荐
- Linux Shell脚本入门--wget 命令用法详解
Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...
- linux 指令tftp传输文件_Linux tftp 命令用法详解-Linux命令大全(手册)
tftp 在本机和tftp服务器之间使用TFTP协议传输文件 补充说明 tftp命令 用在本机和tftp服务器之间使用TFTP协议传输文件. TFTP是用来下载远程文件的最简单网络协议,它其于UDP协 ...
- linux教程 sed命令的用法,Linux基础教程之文件三剑客sed命令用法详解
sed是一种流编辑器,它是文本处理中非常强大的工具,能够完美的配合正则表达式使用,用法简单实用,非常灵活. 工作原理:sed命令处理文本时,把当前处理的行存储在一个临时缓冲区中,称为"模式空 ...
- linux中cat、more、less命令区别详解
linux中cat.more.less命令区别详解 转自:https://blog.csdn.net/xyw_blog/article/details/16861681 众所周知linux中命令cat ...
- linux中用less命令,Linux less 命令用法详解
原标题:Linux less 命令用法详解 less 是一个Linux命令行实用程序,用于显示文件或命令输出的内容,它一次只显示一个页面.它类似于 more ,但具有更高级的功能,允许您在文件中向前和 ...
- linux为什么用tar压缩,linux下tar压缩和解压命令用法详解
linux下tar压缩和解压命令用法详解 2017-03-25 14:06 分享人:老牛 将/usr/local/test目录下所有文件仅打包,不压缩到 /usr/local/auto_bak/目下 ...
- Linux下find命令用法详解
Linux下find命令用法详解 学神VIP烟火 学神IT教育:XueGod-IT 最负责任的线上直播教育平台 本文作者为VIP学员 烟火 第一部分:根据文件名查找 1.在当前目录查找名称为test的 ...
- linux bin fuser,Linux中fuser命令用法详解
描述: fuser可以显示出当前哪个程序在使用磁盘上的某个文件.挂载点.甚至网络端口,并给出程序进程的详细信息. fuser显示使用指定文件或者文件系统的进程ID. 默认情况下每个文件名后面跟一个字母 ...
- 【Linux】Linux中rz和sz命令用法详解
[Linux]Linux中rz和sz命令用法详解 1. 简单介绍 rz,sz是Linux/Unix同Windows进行ZModem文件传输的命令行工具.优点就是不用再开一个sftp工具登录上去上传下载 ...
最新文章
- 【MySQL】MySQL5.6新特性之Index Condition Pushdown
- jQuery中hover与mouseover和mouseout的区别分析
- 28.Node.js 函数和匿名函数
- 飞桨模型保存_飞桨实战笔记:自编写模型如何在服务器和移动端部署
- php获取html中文本框内容_小猿圈Python入门之批量获取html内body内容的方法
- linux yum的用法【ZT】
- BP神经网络——如何进行权值的初始化
- 【物流选址】基于matlab节约算法求解考虑碳排放及带时间窗的物流选址问题【含Matlab源码 1589期】
- 精选JAVA毕业设计83套——源码+论文完整资源
- 雷达篇(二)线性调频信号公式推导及matlab仿真
- HIVE的基本使用05(HSQL调优)
- UDP网络通信的发包/收包过程/代理服务器的使用
- vmd python 命令_VMD常用命令
- Python编程:通过百度文字识别提取表格数据
- FLUENT进行组分反应模拟
- 华为路由器和交换机在BootROM下清除Console口密码
- matlab 函数,matlab 语法1
- Google推出免费中秋祝福短信服务
- SDK全局热更新方案(全网唯一)
- 如何用python制作炫酷的个人足迹地图?