十七. 正则以及grep ,sed,awk的简单应用

一.正则表达式:/ /
grep,sed,awk 都能解释正则表达式

正则表达式:把一些特殊符号组合到一起描述字符和字符串的方法。
^ 以什么开头 grep ‘^root‘ /etc/passwd
$ 以什么结尾 如能登入系统的所有用 grep ‘bash$’/etc/passwd
. 任意一个字符 grep ‘^b.n‘ /etc/passwd 过滤取到bin的
.* 所有字符
* 代表前面的字符有0个或者无穷个 grep ‘b*‘ /
+ 必须用egrep 或 egrep -E ‘ab+’表示前面的字符有一个或者无穷个
{}  ‘ab{n}’前面的字符有n个  控制前面字符个数{3} 前面字符的个数为3
? ‘ab?’前面字符出现0次或1次 前面的字符为b 不是ab
[]  [yan] 只取里面的一个y[asdd]n  yan ysn ydn yasn 可以取到yan ysn ydn
[^]中括号里面的取反
^[^] 非字符组的字符开头的行
[a-z]所有的小写字母
[A-Z]所有的大写字母
[a-zA-Z]所得大小写字母
[123\-]去123其中的一个或 ‘-‘
-必须放在后面
二.grep
grep 命令:
grep -n 显示匹配所在行
-q  静默模式
-l  打印文件名
-A n 打印后几行
-B n 打印前几行
-C n 前几行和后几行
-o 只显示匹配的内容
-c 匹配成功的行数
-E ==egrep
-i 忽略大小写,全部抓取
-v 取反抓取,过滤  不匹配这几行,过滤到其他
-w 过滤单词全部的内容

三.sed 流编辑器
sed包括两部分  第一部分为定位到行,其次是正则定位
sed -r ‘定位+操作‘
-n  静默模式  默认的输出不打印出来
-e  可以指定多个规则
-i  将内容写到文件里面并且打印出来
-f  将内容写到指定文件里
命令:
d=del 删除 sed ‘2d‘ 文件名  删除文件的第二行并打印出来,源文件不修改
p=print 打印 sed‘2p‘ 打印第二行
c=change 修改 sed‘2c 111111‘ 将第二行改成111111
a=append 追加 sed‘2a 11111 ‘ 在第二行后面追加11111
i=inset 插入 sed ‘2i 11111‘在第二行前一行插入11111
s=substation 替换 sed ‘s/a/b/g’ 把所有的a换成b   g代表这行当中所有都改,不加只改第一个a
sed 正则定位
sed ‘/正则表达式/命令’目标文件
sed ‘ ; ‘ 目标文件  两个命令一起执行
sed -r ‘s///‘ s命令修改部分内容

四.awk

awk 可以处理格式明显的文本
awk -F  指定分隔符
如:
--awk -F: ‘{print $n}’/ect/passwd 取用户配置文件的:前面的n个并打印出来
--awk -F: ‘{print $n,NF}’/ect/passwd 取用户配置文件的:前面的n个并打印出来 并且打印出有几段
--awk -F: ‘{print $n,$NF}’/ect/passwd 取用户配置文件的第n段和最后一段并且显示出来
--awk -F: ‘{print $n,NR}’/ect/passwd 取用户配置文件的第n段并且显示行号
&0 取所有   NF 代表以:为分隔符的有几段   NR表示显示行号:
NR==1 表示定位
--awk -F: ‘NR==1{print $n}’/etc/passwd 取用户配置文件的第一行的第N段
--awk -F: ‘NR<=3{print NR,"aaaaaa",$1,NF}‘ /etc/passwd 取用户配置文件的前三行的第一段,并且显示行号,行内以:分割的有几段
--awk -F: ‘3<=NR&&NR<=5{print NR,"aaaaaa",$0,NF}‘ /etc/passwd 用户配置文件的3-5行的
--awk -F: ‘NR<=2||NR>=5{print NR,"aaaaaa",$0,NF}‘ /etc/passwd 用户配置信息的第二行之前的,第7行之后的
--awk -F: ‘/nologin$/{print $1}‘ /etc/passwd
--awk -F: ‘$1~/^r.*t$/{print $3,$1}‘ /etc/passwd 取用户配置文件的第一段的以r开头t结尾的第3段和第一段
--{     count=n   定义一个变量
 awk -v x=$count -F: ‘$3 >= x{print $1}’/etc/passwd
  } 取用户配置信息的UID>n的第一段并且打印出来

其他常用命令的补充:
--cat a.txt |sort |uniq 排序并且去重a.txt的文件内容
--cut命令  cat a.txt |cut -d: -f1,3 取a.txt 以:为分隔符的第一段和第三段
--find命令 find / -type f
                  -name "* .txt" 根目录下以txt文件为结尾的文件
                  -size +30M  大于30M的文件
                  -size +10M -size -30M 大于10M小于30M的文件

时间: 2024-10-07 08:22:17

十七. 正则以及grep ,sed,awk的简单应用的相关文章

grep,sed,awk与简单正则表达式应用

grep,sed,awk与简单正则表达式应用 这里使用的测试文件是linux /etc/passwd文件,最好是复制一份进行练习,方式对文件内容造成损坏.感觉还是要多练习才能很好的使用,习题这里就不贴了,网上一找一大把. grep:   -o 用作计算出现多少次字段  -c 打印符合要求的行数  -n 在输出符合要求的行的同时也打印行号  -v 打印不符合要求的行  -A 后跟一个数字 ps -A2表示打印符合要求的行及下面两行  -B 后跟一个数字 ps -B2表示打印符合要求的行及上面两行 

LINUX 下 find grep sed awk 的常见基本用法特点

LINUX 下 find grep sed awk 的常见基本用法特点 只为让自己具有更高的水准,这就开始了长达6个月的小白进阶路! 这几天学习linux基础命令有点犯蒙,尤其是对文件查找这块.所有我想把一些我觉得常用的实用的参数项总结下来,大神勿喷哈... 不到之处请大家指教,小女子在此谢过了. 一.find:命令用于查找文件系统中指定的文件,其命令格式为: 1.find pathname -options [ -print  -exec  -ok ... ] (1)find 命令的参数: p

Linux三剑客grep/sed/awk

grep/sed/awk被称为linux的“三剑客” grep更适合单纯的查找或匹配文本: sed更适合编辑匹配到的文本: awk更适合格式化文本,对文本进行较复杂各式处理: Grep --color=auto 或者 --color:表示对匹配到的文本着色显示 -i:在搜索的时候忽略大小写 -n:显示结果所在行号 -c:统计匹配到的行数,注意,是匹配到的总行数,不是匹配到的次数 -o:只显示符合条件的字符串,但是不整行显示,每个符合条件的字符串单独显示一行 -v:输出不带关键字的行(反向查询,反

[CentOS 7系列]grep/sed/awk实战

最近准备和CoreSite - Any2 California接入商建立网络BGP邻居关系.从peeringdb (https://www.peeringdb.com/ix/142)上找到了所有接入商的信息,但是转移信息到本地不是很方便,需要进行多次文本调整,耗时较长.作为萌新,立马就想到近期学习的grep/sed/awk工具.于是就尝试处理数据. 1.下载页面内容 curl https://www.peeringdb.com/ix/142 > peering 将页面内容存入peering文件

linux初学之grep &nbsp; sed &nbsp; awk 正则表达基本例子

. 表示任意一个 (数字,#,空格,特殊符号,字母) *表示0个或多个*号前面的字符 +表示一个或多个+前面的字符 ?表示一个或零个前面的字符 .*表示任意一个任意字符(贪婪的匹配方法) ?,+,(),|,{},[]需要脱意 参数: -c  一用有多少行 -An n为数字,这一行以及下面(After)n行打印出来 -Bn n为数字,这一行以及上面n(Bfore)行打印出来 -Cn n为数字,上下n行打印出来 [[email protected] ~]#grep -n 'root' 1.txt 打

find/pg/grep/sed/awk命令

find pathname -options [-print -exec -ok ...] -print: find命令将匹配的文件输出到标准输出. 当前目录下查找文件权限位为 7 5 5的文件 $ find . -perm 755 -print 当前目录及子目录中查找文件名以一个大写字母开头的文件 $ find . -name "[A-Z]*" 希望在系统根目录下查找更改时间在 5日以内的文件 $ find / -mtime -5 -print 为了在/var/adm目录下查找更改时

三个支持正则表达式的行处理的工具: grep/sed/awk

grep: 全称Global Regular Expression Print, 是干什么的,不多说了: 用法:grep [-options] [pattern] [filename] 选项: -c: 只输出匹配行的数目 -i: 不区分大小写 -n:显示匹配航以及行号 -l:查询多文件的时候只输出包含匹配字符的文件名 -L: 列出不匹配的文件名: -v:反向匹配,即显示不匹配的行 -h: 查询的时候不适用文件名 -s:不显示错误信息 -E 使用扩展正则表达式 //很有用啊, -A :后跟一个数字

六、三剑客grep/sed/awk

6.1.正则表达式  正则表达式: 是一类字符所书写出的模式(pattern):元字符:不表示字符本身的意义,用于额外功能性的描述.  1) 基本正则表达式: BRE元字符: .: 匹配任意单个字符 [char]: 匹配指定范围内的任意单个字符 [^char]:匹配指定范围外的任意单个字符 字符集合: [:digit:], [:lower:], [:upper:], [:punct:], [:space:], [:alpha:], [:alnum:] 匹配次数( 贪婪模式) : *: 匹配其前面

[shell]grep sed awk 练习题

下面是简单学习之后做得练习题,如果有不对的,请交流啊. Grep 练习 文件名grepfile Steve Blenheim:238-923-7366:95 Latham Lane, Easton, PA 83755:11/12/56:20300 Betty Boop:245-836-8357:635 Cutesy Lane, Hollywood, CA 91464:6/23/23:14500 Igor Chevsky:385-375-8395:3567 Populus Place, Caldw