笔记7 正则(grep、sed、awk工具)

正则
含义:就是一串有规律的字符串

grep


用来过滤指定关键词的
格式:grep后边跟关键词在跟文件名
-c 显示行数

-i 不区分大小写,加上-i它会把大写的显示出来

-n 显示行号

-v 取反,意思就是把你指的关键词之外的全显示出来,例如我一开始指定要带nologin的,加上-v之后就会显示不带有它的,如图。

-r 把一些子目录或者孙目录所有下边的文件遍历一遍
-A后面跟数字,过滤出符合要求的行以及下面的n行,意思就是比如你要过滤关键词root,加上-A2,它会给你把只要有root关键词的这一行加上往下的两行一起列出来,如下图。

-B跟A相反,过滤出符合要求的行以及上面的n行

-C全是AB的结合,过滤出符合要求的行以及上下各n行

grep ‘[0-9]‘ 表示过滤0-9的数字,例如,grep ’[0-9]‘ passwd 如下图

grep -n ‘^#‘   意思是以#号开头的行

grep -vn ‘^#‘ 意思是不以#号开头的行

grep ‘[^0-9]‘  把里边非0-9的列出来

grep ‘^[^0-9]‘ 以一个非数字开头的行全部列出来

grep  -v ‘^[^0-9]‘相反的行

 grep ‘r.o‘ .表示任意的一个字符

grep ‘o*o‘ *表示0个过多个*前面的字符

grep ‘.*‘表示任意一个任意字符

grep ‘o\{2\}‘ 一样的命令还有egrep ‘o{2}‘   grep  -E ‘o{2}‘花括号表示前面这个字符的重复范围

egrep ‘o+o‘ 意思是加号前面这个字符的一次或多次

egrep ‘o?t‘ 表示问号前面这个字符的重复次数为零或者一

grep -E ‘root | nologin‘ 竖线是或者的意思

sed


sed -n 只匹配一个指定字符例如,
sed -n ‘/root/‘p test.txt  只匹配有root字符的行
sed -r 加上r之后就不用拖一了,例如,sed -nr ‘/o+t/‘p test.txt
sed -nr ‘/o{2}/‘p test.txt匹配两次o
sed -n ‘5‘p test.txt  打印指定的行
sed -n ‘1,5‘ p test.txt 打印指定范围的行
sed -n ‘1,$‘p test.txt 打印指定的行到末尾的行,$末尾行的意思
sed -n ‘/root/‘p test.txt 
sed -n ‘/^ 1/‘p test.txt 
sed -n ‘in$‘p test.txt 
sed -n ‘/r..o/‘p test.txt 
sed -n oo* p test.txt 
sed -e 在同一个表达式里边做多项操作,例如,我不仅要把几行打印出来还要匹配字符串:sed -e ‘1‘p -e /bus/ ‘ p -n test.txt

在p后边加上大i就不会区分大小写了sed -e ‘1‘p -e /bus/ ‘ pI -n test.txt
怎么删除行,加d选项,例如
 sed ‘1,10‘d test.txt 意思是把一到十行删除,但是他并没有删除,只是把剩下的行给列出来
 set -i 这个是删除选项,例如删除指定行sed  -i ‘1,10‘d test.txt 删除指定字符的行  sed -i ‘/user2/‘d test.txt
 替换需要加s,g意思是全局替换,例如:sed ‘1,10s/root/toor/g‘ test.txt
意思是把一到十行里的root替换成toor 如下图

删除英文字母:sed ‘s/[a-zA-Z]//g‘如下图

出现两个//时它会报错我们需要加上\,例如:sed ‘s//root/123/g‘换成sed ‘s/\/root/123/g‘  如下图:

在所有的行前面加上一个固定的字符串如下图:

如何把第一段和最后一段调换位置,如下图:

awk


把第一段打印出来:awk -F ‘:’ ‘{print $1}’ test.txt 如下图:

打印所有的段用0表示:awk ‘:’ ‘{print $0}’ test.txt

打印指定更多的段:awk -F ‘:’ ‘{print $1,$2,$3}’ test.txt

列出指定的字符,例如oo:awk ‘oo‘ test.txt

只要第一段带oo的:awk -F ‘:’ ‘$1 ~ /oo/’ .test.txt

多个表达式一起写:awk -F ‘:‘ ‘/root/ {print $1,$3} /test/ {print $1,$3}‘ /etc/passwd

查找第三段等于0行:awk -F ‘:‘ ‘$3=="0"‘ /etc/passwd

查找某一段大于等于500的:awk -F ‘:‘ ‘$3>="500"‘ /etc/passwd

!=意思就是不等于:awk -F ‘:‘ ‘$7!="/sbin/nologin"‘ /etc/passwd

还可以把第几段小于第几段的列出来:awk -F ‘$3<$4’

相等的段也可以列出来:awk -F ‘$3=$4’

还可以把一段大于几并且小于几的一同列出来:awk -F ‘$3>“5” && $3<“7”’

||是或者的意思:awk -F ‘:‘ ‘$3>"5" || $7=="/bin/bash"‘ /etc/passwd

OFS是在你打印的时候指定的分隔符。例如:

awk -F ‘:’ ‘{OFS=“#”}{if ($3>1000) {print $1,$2,$3,$4}’

NR表示打印时的行:awk -F ‘:‘ ‘{print NR“:”$0}‘ 显示行号的意思,把所有的行打印出来。

NF表示打印是的段:awk -F ‘:‘ ‘{print NF“:”$0}‘

只要前十行:awk -F ‘:’ ‘NR<=10’

计算某个段落的总和:awk -F ‘:‘ ‘{(tot=tot+$3)}; END {print tot}‘ /etc/passwd END表示所有的行都已经执行。

时间: 2024-12-28 13:48:23

笔记7 正则(grep、sed、awk工具)的相关文章

Shell脚本 (四)正则表达式 grep sed awk 工具

正则表达式定义正则表达式,又称正规表达式.常规表达式是使用单个字符串来描述.匹配一系列符合某个句法规则的字符串·正则表达式组成普通字符大小写字母.数字.标点符号及一些其他符号元字符在正则表达式中具有特殊意义的专用字符·基础正则表达式示例查找特定字符利用中括号[]来查找集合字符查找行首^与行尾字符$查找任意一个字符.与重复字符查找连续字符范围{}·基础正则表达式的常见元字符^.$...\..[ ].[^ ].[n1-n2].{n}.{n,}.{n,m}·####查找特定字符####n--表示显示行

[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/sed/awk

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

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

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

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

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

十七. 正则以及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+'表示前面的字符

shell脚本(正则表达+sed+awk)

一. 正则表达式:   正则表达式(或称Regular Expression,简称RE)就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式. 该模式描述在查找文字主体时待匹配的一个或多个字符串. 正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.简单的说,正则表示式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为, 正则表示式通过一些特殊符号的辅助,可以让使用者轻易的达到搜寻/删除/取代某特定字符串的处理程序.vim.grep.find.awk

grep,sed,awk 个人总结

正则表达式 ifconfig |sed -n '2p' |sed 's.*inet//g' |sed 's#netmask.*$##g' #用/ # 均可 理论可用任何特殊字符替代 #sed -r 后面可跟扩展正则 扩展正则 + (.*) ifconfig |sed -n 2p |sed -r 's#^.*inet (.*) Broast.*$#\1#g' # \1 代表正则中的第一个GROUP 即(.*)里的内容 ifconfig |sed -nr '2s#^.*inet (.*)net.*$

sed &amp;&amp; awk工具 及一些常用的shell脚本

(一)sed sed是一个精简的.非交互式的流式编辑器,它在命令行中输入编辑命令和指定文件名,然后在屏幕上查看输出. 逐行读取文件内容存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.原文件爱你的内容并没有改变. sed '4,$d' test.in # 删除4~最后一行 sed '3q' test.in # 读到指定行之后退出 sed 's/public

文本处理工具之:grep sed awk

正则就是用一些具有特殊含义的符号组合一起来描述字符或字符串的方法.在linux中,通配符是由shell解释的,而正则表达式则是由命令解释的,下面我们就为大家介绍三种文本处理工具/命令:grep.sed.awk,它们三者均可以解释正则 一:grep 参数 -n :显示行号 -o :只显示匹配的内容 -q :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容 -l :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl 'root' /etc