千家信息网

正则表达式

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,grep主要用来过滤的。cp /etc/passwd 1.txtgrep --color 'root' 1.txt #打印符合的行并用颜色显示vim .bashrc#添加alias grep='gre
千家信息网最后更新 2026年10月31日正则表达式

grep

主要用来过滤的。

cp /etc/passwd 1.txt

grep --color 'root' 1.txt #打印符合的行并用颜色显示

vim .bashrc

#添加

alias grep='grep -color'

grep -c 'root' 1.txt #过滤行号

grep -n 'root' 1.txt #打印符合要求的行,并显示行号

grep -v 'root' 1.txt #取反,打印不符合要去的行

grep -E = egrep #表示特殊符号如()+?,不用脱义,脱义符号\

-A :后跟一个数字(有无空格都可以),例如 -A2则表示打印符合要求的行以及下面两行

-B :后跟一个数字,例如 -B2 则表示打印符合要求的行以及上面两行

-C :后跟一个数字,例如 -C2 则表示打印符合要求的行以及上下各两行

-r : 会把目录下面所有的文件全部遍历

grep 'r.t' 1.txt #r和t一定要打印,并且中间还要有一个字符

grep 'r*t' 1.txt #表示t一定要打印,r可以有零个或者多个

grep 'r.*t' 1.txt #r和t一定要打印,中间可以任意个任意字符

grep '[0-9]' 1.txt #打印所有包含数字的行

grep '[^0-9]' 1.txt #打印所有非数字的行,如字符,空行

grep '^[0-9]' 1.txt #打印所有以数字开头的行

grep '[0-2]' txt = grep '[0,1,2]' 1.txt

grep '^$' 1.txt #打印空行

grep 'in$' 1.txt #打印以in结尾的行

grep '[a-z]' 1.txt #打印所有的小字母的行

grep '[a-zA-Z]' 1.txt #打印所有的大小字母的行

grep 'root\|mysql' 1.txt #或者,但是要脱义\

^:以什么开头

$:以什么结尾

*:表示*前面的那个字符可以有零个或者多个。

.*:任意个任意字符

+:一个或多个+前面的字符

?:零个或一个?前面的字符

需要脱义的字符:? + () [] \

sed

grep能用的,sed都能用,sed的功能还要多,可以删除d,替换g

-r表示使用正则的特殊符号不用脱义

sed '10'p -n 1.txt #p为打印,-n取消自动打印,按要求打印行,没有-n会重复打印,

p一般和-n一起用,就是打印一般和-n一起用

sed -n '/root/p' 1.txt #打印包含某个字符的行,可以使用正则^,*$,当有关键字要用//

-e 可以实现同时进行多个任务sed -e'/root/p' -e '/body/p' -n 1.txt,也可以用;实现

sed -n '/root/p;/body/p' 1.txt

sed '/root/d' 1.txt #删除行

sed '1d' 1.txt #删除第一行,打印剩下的

sed '1,10d' 1.txt #删除第一行到第十行,打印剩下的

sed '1,2s/ot/to/g' 1.txt #s替换,g全局替换,否则只替换第一行在1-2行里,把ot替换成to,剩下照常打印,/可以为#,@,这些只在替换生效

sed 's/[0-9]//g' 1.txt #删除所有的数字,即把数字替换为空

sed '/[0-9]/d' 1.txt #删除所有数字的行

sed 's/[^0-9]//g' 1.txt #删除所有的非数字,即把为数字替换为空

head -n2 1.txt |sed's/\(root\)\(.*\)\(bash\)/\3\2\1/' #调换两个字符串的位置,注意脱义符号,还有三个/

sed 's/^.*$/& loging/g' 1.txt #在最后加上 loging,一定要在替换才可以加

sed -i 's/ot/to/g' 1.txt #-i直接修改文件内容

sed练习题:

把/etc/passwd 复制到/root/test.txt,

用sed打印所有行:sed '/.*/p' -n 1.txt

打印test.txt的3到10行:sed '3,10p' -n 1.txt

打印test.txt 中包含 'root' 的行:sed '/root/p' -n 1.txt

删除test.txt 的15行以及以后所有行:sed '15,$d' 1.txt

删除test.txt中包含 'bash' 的行; sed '/bash/d' 1.txt

替换test.txt 中 'root' 为 'toor'

替换test.txt中 '/sbin/nologin' 为 '/bin/login'

删除test.txt中5到10行中所有的数字:sed -e 's/[0-9]//g' -e '5,10p' -n 1.txt

删除test.txt 中所有特殊字符(除了数字以及大小写字母):sed 's/[^a-zA-Z0-9]//g' 1.txt

把test.txt中第一个单词和最后一个单词调换位置:sed -r 's/(^.*)(:.*:)(.*$)/\3\2\1/' 1.txt

把test.txt中出现的第一个数字和最后一个单词替换位置

把test.txt 中第一个数字移动到行末尾

在test.txt 20行到末行最前面加 'aaa:':sed -e 's/^.*$/& aaa/g' -e '10p' -n 1.txt

awk

可以按段打印

awk -F ':' '{print $1}' 1.txt #以:为分界符,截取文档的第一段

awk -F ':' '{print $1"#"$2}'1.txt #以:为分界符,截取文档的第一段和第二段并用#分界,自定义分界只能用双引号"",不能用单引号''

awk -F ':' 'OFS="@" {print$1,$3}' 1.txt #和上面一个意思

awk '/oo/' 1.txt #匹配字符或字符串

awk -F ':' '$1 ~/oo/' 1.txt #针对某个段匹配

awk '/root|mysql/' 1.txt #匹配多个

awk -F ':' '/root/ {print $1,$3};$1~/mysql/;$3 ~'/11/'' 1.txt #多次匹配,把每次匹配到的都显示出来

awk -F ':' '$1~/r*o/ {print $3}' 1.txt #打印匹配的行

条件操作符==,>,<,>=,<=

awk -F ':' '$3=="0"' 1.txt

awk -F ':' '$3>=99' 1.txt #初步判断数字不用双引号

awk -F ':' '$7!="/sbin/nologin"'1.txt #字母要用双引号,并且第七段要整一个字符串

awk -F ':' '$3<$4' 1.txt

awk -F ':' '$3>6 && $3<10'1.txt #&&两边只需要一对单引号

awk -F ':' '$3>6 ||$7=="/bin/bash"' 1.txt #字符串要用双引号引起来

awk内置变量 NF(段数) NR(行数)

head -n3 1.txt |awk -F ':' '{print NF}' #打印一共有多少段

head -n3 1.txt |awk -F ':' '{print $NF}' #打印最后一段的字符

head -n3 1.txt |awk -F ':' '{print NR}' #打印行号

awk 'NR>20' 1.txt #打印20以后的行,row行,fragment段

awk -F ':' 'NR>20 && $1 ~/ssh/' 1.txt

awk -F ':''$1="root"' 1.txt #更改某段的值

awk -F ':' '{$7=$3+$4;print $0}' 1.txt #数学计算, 把第三段和第四段值相加,并赋予第七段

awk -F ':' '{if($1=="root") print$0}' 1.txt #也可以使用关键字

awk -F ':' '{tot=tot+$3};END {print tot}'1.txt #计算第三段的总和

cat /etc/passwd|awk -F ':' 'BEGIN {print"name,shell"} {print $1","$7} END {print"blue,/bin/bash"}' #只是显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以逗号分割,而且在所有行添加列名name,shell,在最后一行添加"blue,/bin/nosh"

用awk 打印整个test.txt (以下操作都是用awk工具实现,针对test.txt):awk '/.*/' 1.txt

查找所有包含 'bash' 的行:awk '/bash/' 1.txt

用 ':' 作为分隔符,查找第三段等于0的行:awk -F ':' '$3==0' 1.txt

用 ':' 作为分隔符,查找第一段为 'root' 的行,并把该段的 'root' 换成 'toor' (可以

连同sed一起使用):awk -F ':' '$1=="root"' 1.txt |sed 's/root/toor/g'

用 ':' 作为分隔符,打印最后一段:awk -F ':' '{print $7}' 1.txt

打印行数大于20的所有行:awk -F ':' 'NR>20' 1.txt

用 ':' 作为分隔符,打印所有第三段小于第四段的行:awk -F ':' '$3<$4' 1.txt

用 ':' 作为分隔符,打印第一段以及最后一段,并且中间用 '@' 连接(例如,第一行应>该是这样的形式 'root@/bin/bash' ):awk -F ':' 'OFS="@"{print $1,$7}' 1.txt

用 ':' 作为分隔符,把整个文档的第四段相加,求和:

awk -F ':' 'sum=sum+$4 {print sum}' 1.txt|tail -n1


数字 字符 分隔符 引号 一行 多个 字母 字符串 符号 特殊 不用 位置 单词 后跟 文档 账户 行号 正则 关键 关键字 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技产业 科技股互联网 互联网科技财经 世界互联网领先科技成果 安徽鑫晟辉互联网科技 凡科互联网科技 华中科技有哪些互联网大佬 科技与互联网哪个更好 恒生互联网科技指数跳水 互联网科技和信息 互联网金融科技名词解释 智帮互联网科技公司最近动向 互联网风格科技公司名称 南京一网一红互联网科技有限公司 科技互联网行业投资研究 版纳互联网科技选哪家 唐山双旺合互联网科技产业园 玉溪新华互联网科技怎么选 绵阳真晨互联网科技有限公司 上海旺乐尼互联网科技有限公司 科技互联网 为想互联网科技怎么样 互联网络科技有限公司 华夏互联网科技业 特约风豹互联网科技为什么扣费 卓翼科技产业互联网合作 中天科技中国工业互联网 宇信科技在杭州互联网排第几 信承诺互联网科技有限公司 银川新华互联网科技学校是国营吗
0