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


grep


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

wKiom1lvC2LgmxC4AABo8JX5rWk203.png

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

wKiom1lvC-WwitV0AAGe8UhQagI575.png

-n 显示行号

wKiom1lvC5fCDWHUAAGpGO-rTT4443.png

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

wKioL1lvDCHzRjhZAAFrOGMuoUo840.png

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

wKioL1lvDJnSF6odAAFQMCKEbZg144.png

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

wKioL1lvDLGCeCFMAAEq2Cozq3o047.png

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

wKioL1lvDMHh4S4yAAFIZ7RjFcw397.png


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

wKioL1lvLDXQqzc0AAE484T8yEk064.png

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

wKioL1lvLMCB8v_sAAEl0WEOrT0437.png

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

wKioL1lvLO-BynywAACcHIJ2eso629.png

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

wKioL1lvLRDxOxtNAABr6M2-Rco021.png

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

wKiom1lvLWLBoEzEAACH0JZdI-I583.png

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

wKiom1lvLX-BtwZhAAARLS0oXtI108.png

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

wKiom1lvLaChDY0VAADJ7tNyGIc694.png

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

wKioL1lvLcPx1BVKAAGVOVQaZBg538.png

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

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

wKioL1lvLfiQpO8IAAINvRVZaKo007.png

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

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

wKiom1lvLkSj5qIDAACuR51K2aw150.png

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

wKioL1lvLlHgcCvjAAGjUw-4f-M981.png


sed


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

wKiom1lwbYLBVLVAAAFUZAf1Uxc928.png

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

wKiom1lwbevjRnY5AAFBJBEg9HY161.png

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

wKiom1lwbhaSZ3RuAACTiM8THqY414.png

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

wKiom1lwbk2zsaSWAAFhARi_vMY433.png

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

wKioL1lwbmDRKPpqAAFZ8LldBBQ211.png

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

wKiom1lwb-DgFAWeAADRlILBnbI079.jpg


awk


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

wKiom1lwjxigKV9vAAB8H_4SzDM767.png

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

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

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

wKioL1lwj0XDzhnuAAFdvUz8Hg8352.png

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

wKiom1lwj12yH44sAACaJFb6XT4070.png

多个表达式一起写: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’

wKiom1lwj5SySW6WAAHECsHQUUE355.png

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

wKiom1lwj87Qbnt3AAFMBASDwhI105.png

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

wKiom1lwj-DikQAoAAEscsh64Yk853.png

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

wKiom1lwkA-DTy6uAABWopXuXNg519.png

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

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

wKiom1lxpfLDzNdOAAEQ4XgXKpU601.png

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

wKioL1lxp7ihRAT-AAGXVfxCfBg727.png

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

wKioL1lxqLOwDZRdAAESabF6c4M025.png

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

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

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

  1. Html5 canvas实现粒子时钟的示例代码

    这篇文章主要介绍了Html5 canvas实现粒子时钟的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. 在Xcode4中,你可以更改用于显示隐形字符的字符吗?

    我更喜欢VisualStudio显示隐形的方式……

  3. ios – 应用程序商店描述特殊字符

    是不是可以在AppStore描述中使用像星星这样的特殊字符了?我得到这个错误:描述不得包含标记语言.说明不得包含以下字符:★提前致谢:)解决方法仍然允许一些unicode字符.以下字符已经过测试并仍然有效:◆√至于现在他们工作正常,但苹果可以随时再次改变条件.

  4. ios – 将数组中的字符转换为整数

    即使我搜索了文档,我似乎无法弄清楚如何做到这一点.我试图弄清楚如何将数组中索引处的字符转换为整数.例如,假设我有一个名为“容器”的字符数组,我无法弄清楚该怎么做:谢谢您的帮助!解决方法Swift并不容易在原始和类型表示之间进行转换.这是一个在此期间应该有所帮助的扩展:这使您可以非常接近您想要的:对于遇到此问题的任何工程师,请参阅rdar://17494834

  5. macos – 运行brew命令充满了’同意Xcode / iOS许可证需要管理员权限,请通过sudo以root身份重新运行.’

    所以我跑了:如果滚动到底部,可以输入“同意”,然后就可以了.

  6. ios – 创建一个包含n个空格或其他重复字符的字符串

    我想使用Swift使用n个空格进行字符串,但不使用for循环或手动如下所示:解决方法String已经有一个repeating:count:initializer就像Array(和其他采用RangeReplaceableIndexable协议的集合):所以你可以打电话:请注意,重复的参数是一个字符串,而不仅仅是一个字符,因此您可以重复整个序列:编辑:更改为Swift3语法,并删除了关于Swift1类

  7. ios – 如何使用Unicode十六进制值(UTF-16)在Swift中表达字符串

    我想在Swift中使用十六进制值编写一个Unicode字符串.我已经阅读了字符串和字符的documentation,所以我知道我可以使用特殊的Unicode字符直接在字符串如下:版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  8. iOS设备UDID是否区分大小写?

    这是关于将设备添加到供应门户以进行临时测试.客户端向我发送了一个带有大写字符的UDID,我愚蠢地添加了这些字符而没有检查.无线部署不起作用,我想知道这是否可能是原因,但我想在使用我的100个分配之一之前先检查.解决方法是的,UDID区分大小写.如果它不是数字,您可以浏览所有字符并将它们转换为小写字符.

  9. ios – 在NSString中查找俄语字符

    我必须检查Nsstring中是否存在俄语字符.我正在使用以下代码:但它总是返回FALSE.任何人都可以告诉我我的代码有什么问题吗?谢谢解决方法目前,您的条件检查字符串中不存在非俄语字符,而不是字符串中存在西里尔字符.对于完全由拉丁字母1中没有等效字符的西里尔字符组成的字符串,您的代码将返回YES.要解决此问题,请删除反转,然后反转检查,如下所示:1您忘记在列表中包含软停止,它看起来像小写字母b,但它不是相同的字符.

  10. ios – 仅适用于iPad的Settings.bundle?

    我有一种情况需要通过设置应用程序为我的应用程序提供一个设置.我的应用程序是通用的,但这个特殊的设置只在iPad上有意义,所以我只希望我的应用程序显示在iPad上的设置中.这可能吗?

随机推荐

  1. 法国电话号码的正则表达式

    我正在尝试实施一个正则表达式,允许我检查一个号码是否是一个有效的法国电话号码.一定是这样的:要么:这是我实施的但是错了……

  2. 正则表达式 – perl分裂奇怪的行为

    PSperl是5.18.0问题是量词*允许零空间,你必须使用,这意味着1或更多.请注意,F和O之间的空间正好为零.

  3. 正则表达式 – 正则表达式大于和小于

    我想匹配以下任何一个字符:或=或=.这个似乎不起作用:[/]试试这个:它匹配可选地后跟=,或者只是=自身.

  4. 如何使用正则表达式用空格替换字符之间的短划线

    我想用正则表达式替换出现在带空格的字母之间的短划线.例如,用abcd替换ab-cd以下匹配字符–字符序列,但也替换字符[即ab-cd导致d,而不是abcd,因为我希望]我如何适应以上只能取代–部分?

  5. 正则表达式 – /bb | [^ b] {2} /它是如何工作的?

    有人可以解释一下吗?我在t-shirt上看到了这个:它似乎在说:“成为或不成为”怎么样?我好像没找到’e’?

  6. 正则表达式 – 在Scala中验证电子邮件一行

    在我的代码中添加简单的电子邮件验证,我创建了以下函数:这将传递像bob@testmymail.com这样的电子邮件和bobtestmymail.com之类的失败邮件,但是带有空格字符的邮件会漏掉,就像bob@testmymail也会返回true.我可能在这里很傻……当我测试你的正则表达式并且它正在捕捉简单的电子邮件时,我检查了你的代码并看到你正在使用findFirstIn.我相信这是你的问题.findFirstIn将跳转所有空格,直到它匹配字符串中任何位置的某个序列.我相信在你的情况下,最好使用unapp

  7. 正则表达式对小字符串的暴力

    在测试小字符串时,使用正则表达式会带来性能上的好处,还是会强制它们更快?不会通过检查给定字符串的字符是否在指定范围内比使用正则表达式更快来强制它们吗?

  8. 正则表达式 – 为什么`stoutest`不是有效的正则表达式?

    isthedelimiter,thenthematch-only-onceruleof?PATTERN?

  9. 正则表达式 – 替换..与.在R

    我怎样才能替换..我尝试过类似的东西:但它并不像我希望的那样有效.尝试添加fixed=T.

  10. 正则表达式 – 如何在字符串中的特定位置添加字符?

    我正在使用记事本,并希望使用正则表达式替换在字符串中的特定位置插入一个字符.例如,在每行的第6位插入一个逗号是什么意思?如果要在第六个字符后添加字符,请使用搜索和更换从技术上讲,这将用MatchGroup1替换每行的前6个字符,后跟逗号.

返回
顶部