首页 / 正则 / shell 的正则表达式
shell 的正则表达式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了shell 的正则表达式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6627字,纯文字阅读大概需要10分钟。
内容图文
![shell 的正则表达式](/upload/InfoBanner/zyjiaocheng/954/fa2d6e1ce4164726b19c33646e067620.jpg)
###########################
grep #文本过滤命令
#贪婪模式 把所有东西都会显示
grep 命令是一种强大的文本搜索工具,根据用户指定的“模式”对目标文本进行匹配检查打印匹配的行
由正则表达式或者字符及其文本字符所编写的过滤条件
正规的 grep 不支持扩展单元的正则表达式子,竖线是用于表示“或”的扩展正则表达式元字符,正规 grep 无法识别
加上 \ 这个字符就被翻译成扩展正则表达式,就像 egrep 和 grep -E 一样
< 防止前面贪婪 > 防止后面贪婪
-E egrep #识别扩展的正则表达式子
-i #忽略大小写
-v #除了
-n #行号
-n2 #显示上两行下两行行号
grep root passwd #显示所有含有root的行
grep -Ei “root” passwd #不区分大小写,显示所有root行
grep -Ei “^root” passwd #显示所有root在前面的行
grep -Ei “root$” passwd #显示所有root在后面的行
grep -Ei “^root|root$” passwd #显示所有root在前面和后面的行
grep -Ei “^root|root$” passwd -v | grep root #显示root在中间的行
grep -Ei “^root|root$” passwd -n #显示行号
grep ROOT passwd -n2 #显示ROOT行号及其上两行下两
grep ROOT passwd -A1 #显示ROOT行和其下一行
grep ROOT passwd -B1 #显示ROOT行和其上一行
grep xy file #显示所有xy的行
grep x.y file #显示xy中间有一个字符的行
x…y 两个
x…y 三个
grep x*y file #显示字符出现0-任意次
grep -E x?y file #显示字符出现0-1次
grep -E x+y file #显示字符出现1-任意次
grep -E x1y file #显示字符出现1次
grep -E x{3}y file
grep -E “x{3,}y” file #显示字符出现的次数
grep -E “(xy){3,}” file #显示(xy)整体出现的次数
grep -E ^xy file #显示xy在前面的行
grep -E xy$ file #显示xy在后面的行
grep -E “<xy” file #显示xy前面没有信息的行
grep -E “xy>” file #显示xy后面没有信息的行
grep -E “<xy>” file #显示xy的信息
############# sed ##############################
sed #行编辑器
#不改变源文件内容,仅仅是操作模式空间的内容
处理时,把当前处理的行存储到临时缓冲区中,成为“模式空间”可以指定仅仅处理那些行
sed 符合模式条件的处理,不符合条件的不处理
处理完成之后把缓冲区的内容送往屏幕
接着处理下一行,不断重复,直到文件末
-p #显示
-d #删除
-a #添加
-i #插入
-c
-w
#-p #显示
vim flie
cat flie
sed -n ‘/#/p’ flie #
vim flie
cat flie
sed -n ‘/#/p’ flie
sed -n ‘/#/!p’ flie
sed -n ‘/liu/p’ flie
sed -n ‘2p’ flie
sed -n ‘2,6p’ flie
sed -n ‘2p;6p’ flie
#-d #删除
cat flie
sed ‘/#/d’ flie #删除含有#的行
sed ‘/^#/d’ flie #删除#在前面的行
sed ‘/^#/!d’ flie #不删除#在前面的行
sed ‘1,4d’ flie #删除1-4行
sed ‘1d;4d’ flie #删除1和4行
sed ‘/liu/d’ flie #删除liu行
sed ‘/liu/!d’ flie #不删除liu行
#-a #添加
sed ‘/liu/ahello’ flie #在liu行后加上hello
sed ‘/liu/ahello\nwestos’ flie #在liu行后加上hello并且换行加上westos
#-i #插入
sed ‘/ajdiajdajdlajdlak/ihello’ flie #在次行前加上hello
sed ‘/ajdiajdajdlajdlak/ihello\nwestos’ flie #在次行前加上hello并且换行加上westos
#-c #替换
sed '/#/chello everyone' flie
#-w #写入到其他文件里面
sed ‘/liu/w /mnt/file1’ flie #将liu行写到file1里面
cat file1
sed -n ‘/liu/w /mnt/file2’ flie #显示
cat file2
sed ‘/#/=’ flie #在每行前加上行号
sed ‘/#/=’ flie > file3 #将内容写到file3中
cat file3
sed ‘/#/=’ flie -i #在每行前加上行号,会修改源文件
cat flie
sed的其他用法
cat flie
sed ‘s/#//g’ flie #将全文中的#替换成空格
sed ‘1,5s/#//g’ flie #将1-5行的#替换成空格
sed ‘5s/#//g’ flie #将第5行的#替换成空格
vim flie
sed ‘s///$/g’ flie #将全文的 / 替换成 $ (此处,不能识别/,需要加入 \ 转意字符)
sed ‘s@/@$@g’ flie #@等同于 /
cat flie
sed ‘s/a/L/g’ flie #将全文的a替换成L
sed ‘s/a/L/g;s/j/G/g’ flie #将全文的a替换成L,j替换成G
sed ‘/1/,/5/s/a/L/g’ flie #将1-5行的a替换成L
N 提前预加在你下一行的内容
cat flie
sed ‘G’ flie #给每一行后都加上空行
sed ‘KaTeX parse error: Expected 'EOF', got '#' at position 11: !G' flie #?给每一行后都加上空行,最后一行…p’ flie # 显示最后一行内容 等价于 tail -n 1 flie
########## awk ####################
awk: 报告生成器
awk会逐行处理文本,支持在处理第一行之前做一些准备工作,以及在处理完最后一行做一些总结性质的工作,在命令格式上分别体现如下:
BEGIN{}: 读入第一行文本之前执行,一般用来初始化操作
{}:逐行处理,逐行读入文本执行相应的处理,最常见的编辑指令块
END{}:处理完最后一行执行,一般用来输出处理结果
cp /etc/passwd passwd
ls
vim passwd
cat -b passwd #查看文件内容并标出行号
awk ‘{print FILENAME}’ passwd #每执行一行输出一次passwd
awk -F : ‘{print NF}’ passwd #输出一共多少列
awk -F : ‘{print NR}’ passwd #输出一共多少行
awk -F : ‘BEGIN{print “NAME”}{print NR}’ passwd #在开始加上NAME
awk -F : ‘BEGIN{print “NAME”}{print NR}’{print “END”} passwd #在末尾加上END
awk -F : ‘BEGIN{print “NAME”}{print $1}END{print “END”}’ passwd #输出第一行内容
awk -F : ‘BEGIN{print “NAME”}{print $1,$7}END{print “END”}’ passwd #输出第一行和第七行
awk -F : ‘BEGIN{print “NAME”}{print $0}END{print “END”}’ passwd #输出全部信息
awk -F : ‘BEGIN{print “NAME”}{print $1=""}END{print “END”}’ passwd #输出第一行信息为空
awk -F : ‘BEGIN{print “NAME”}{print $1="";print $0}END{print “END”}’ passwd #输出全部信息除了第一行
awk -F : ‘BEGIN{print “NAME”}{print $1="";print $0}END{print “END”}’ passwd | sed ‘s/ /:/g’ #输出全部信息除了第一行,将上特定字符
##########################################################################
awk ‘/bash$/{print}’ passwd #输出结尾是bash的信息
awk ‘!/bash$/{print}’ passwd #输出结尾不是bash的信息
awk ‘!/bash$/&&!/nologin/{print}’ passwd #输出结尾不是bash和nologin的信息
awk ‘/bash$/||/nologin/{print}’ passwd #输出结尾是bash和nologin的信息
awk -F : ‘/bash$/{print $1}’ /etc/passwd #输出结尾是bash的第一列信息
awk -F : ‘/bash/∣∣/sh/{print $1}’ /etc/passwd #输出结尾是bash和sh的第一列信息
cat /etc/shells
awk -F : ‘/bash/∣∣/sh/||/csh$/{print $1}’ /etc/passwd
awk -F : ‘/bash/∣∣/sh/||/csh/∣∣/tcsh/{print $1}’ /etc/passwd
awk ‘BEGIN{n=0}/bash$/{n++}END{print n}’ /etc/passwd #输出结尾是bash的信息的总数和
awk ‘/1/{print}’ passwd #输出以a-c开头的信息
awk -F : ‘$6~/bin/{print}’ passwd #输出第6列含有bin的信息
awk -F : ‘$6~/<bin/{print}’ passwd #输出第6列是bin的信息
awk -F : ‘$6!~/<bin/{print}’ passwd #输出第6列不是bin的信息
awk -F : ‘BEGIN{n=0}/bash$/{n++}END{print n}’ /etc/passwd #输出结尾是bash的信息的总数和
awk -F : ‘BEGIN{n=0}/bash$/&&$6!~/^\(转意字符)/home/{n++}END{print n}’ /etc/passwd #输出结尾是bash并且第6列不是/home的信息的总数和
awk -F : ‘BEGIN{n=0}/bash$/&&$6!~/^/home/{print;n++}END{print n}’ /etc/passwd #输出结尾是bash并且第6列不是/home的信息及总数和
ifconfig eth0 | awk ‘/inet>/{print $2}’ #截取ifconfig eth0信息中 172.25.254.251
a-c ??
内容总结
以上是互联网集市为您收集整理的shell 的正则表达式全部内容,希望文章能够帮你解决shell 的正则表达式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。