笔记7 正则(grep、sed、awk工具)
正则
-i 不区分大小写,加上-i它会把大写的显示出来 -n 显示行号 -v 取反,意思就是把你指的关键词之外的全显示出来,例如我一开始指定要带nologin的,加上-v之后就会显示不带有它的,如图。 -r 把一些子目录或者孙目录所有下边的文件遍历一遍 -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'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
在p后边加上大i就不会区分大小写了sed-e'1'p-e/bus/'pI-ntest.txt 删除英文字母: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}’ NF表示打印是的段:awk -F ':' '{print NF“:”$0}' 只要前十行:awk -F ‘:’ ‘NR<=10’ 计算某个段落的总和:awk -F ':' '{(tot=tot+$3)}; END {print tot}' /etc/passwd END表示所有的行都已经执行。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |