本文共 4046 字,大约阅读时间需要 13 分钟。
grepgrep -E = egrep##grep 格式##grep 匹配条件 处理文件grep root passwd #过滤root关键字grep ^root passwd ##以root开头grep root$ passwd ##以root结尾grep -i root passwd ##后略大小写grep -E "\" passwd ##root字符之后不能有字符grep -数字 ##显示过滤行以及上面几行和下面几行grep -n ##显示匹配的行所在行号grep -A ##显示过滤行以及下面几行grep -B ##显示过滤行以及上面几行grep -v ##反向过滤grep字符数量匹配规则^westos ##以westos开有westos$ ##以westos结尾w....s ##w开头s结尾中间4个任意字符.....s ##s结尾前面5个任意字符* ##字符出现任意次? ##0到1次+ ##1次到任意次{ n} ##n次{ m,n} ##m到n次{ 0,n} ##0-n次{ ,n} ##0-n次{ m,} ##最少m次(lee){ 2} ##lee字符串出现2次
grep root passwd grep ^root passwd ##以root开头grep root$ passwd ##以root结尾vim passwdgrep root$ passwdgrep root passwd | grep -E "^root|root$"grep root passwd | grep -E "^root|root$" -vvim passwd grep r...t passwd ##r开头t结尾中间3个任意字符grep r*t passwdgrep r.*t passwd ##点的个数是任意多个grep r*.t passwd ##r的个数是任意多个grep r*..t passwdgrep -E "ro?t" passwd ##o 0到1次grep -E "ro{,1}t" passwdgrep -E "ro{,2}t" passwd ##o 0到2次grep -E "ro+t" passwd ##o 1次到任意次grep -E "ro{2,3}t" passwd ##o 2-3次grep -E "rost" passwd vim passwdgrep -E "rost" passwdgrep -E "ros*t" passwdgrep -E "r(os)*t" passwdvim passwdgrep -E "r(os)*{2}" passwdgrep -E "r(os){3}t" passwd ##os字符串出现3次
[root@node1 mnt]# grep -E "bash$|sh$" /etc/passwd | cut -d : -f 1rootwestoslee
链接: .
命令格式:sed 参数 命令 处理对象sed 参数 处理对象 -f 处理规则文件对字符的处理p ##显示sed -n 5p westos ##显示第五行sed -n 3,5p westos ##显示3到5行sed -ne "3p;5p westos ##显示3和5行sed -ne 1,5p westos ##1-5行sed -ne '5,$p' westos ##5到最后以行sed -n '/^#/p' fstab ##显示以#开头的行 sed -n '/^#/!p' fstab ##以#开头的行不显示 d ##删除sed 5d westos ##删除第五行sed '/^#/d' fstab ##把#开头的行删除sed '/^UUID/!d' fstab ##除了UUID以外的行都删除sed -e '5,$d' westos a ##添加 #是在行之后添加sed -e '$a hello world' fstabsed -e '$a hello\nworld' fstabsed -e '/^#/a hello world' fstabc ##替换 #是替换符合条件的整个一行内容,而不是替换某个字符,下面会讲到字符替换sed -e '/^#/c hello world' fstabsed '5chello world' westosw ##把符合的行写到指定文件中sed '/^UUID/w westofile' westos ##把westos中UUID开头的行写入westosfile中i ##插入 #是在行之前添加sed '5ihello westos' westos r ##整合文件 #将haha里的内容添加到westos文件第5行之后,但并不改变westos文件的真实内容只是一个模式空间里的改变 sed '5r haha' westossed 字符替换sed 's/:/###/g' westos sed 's/:/###/' westos sed 's/:/###/g' westos sed '1,5s/:/###/g' westos sed '1s/:/###/g' westos sed '1s/:/###/g;5s/:/###/g' westos sed '/lp/,/shutdown/s/:/###/g' westos sed 's/\//####/g' westos #将/全部替换为####sed 's@/@####@g' westos sed 's@/@####@g' -i westos 把sed处理的内容保存到westos文件中
[root@c mnt]# sed '=' passwd | sed -e 'N;s/\n/ /g' # = Print the current line number. #显示文件的行号# N Read/append the next line of input into the pattern space. #sed本是逐行读取,加N后表示将下一行的输入读取时也放到模式空间里,这样就能将行号和文件的内容出现在同一行中。1 root:x:0:0:root:/root:/bin/bash2 bin:x:1:1:bin:/bin:/sbin/nologin3 daemon:x:2:2:daemon:/sbin:/sbin/nologin4 adm:x:3:4:adm:/var/adm:/sbin/nologin5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin6 sync:x:5:0:sync:/sbin:/bin/sync
[root@c mnt]# vim apache_port.sh 1 #!/bin/bash 2 sed "/^Listen/c Listen $1" -i /etc/httpd/conf/httpd.conf 3 firewall-cmd --permanent --add-port=$1/tcp 4 firewall-cmd --reload 5 systemctl restart httpd[root@c mnt]# sh apache_port.sh 8080[root@c mnt]# netstat -antlupe | grep http
awk -F 分隔符 BEGIN{ }{ }END{ } FILENAMENR #行数NF #列数FILENAME #文件名称本身westos #westos变量值“westos” #westos字符串/bash$/ #条件/条件1|条件2/ #条件1或者条件2/条件1/||/条件2/ #条件1或者条件2/条件1/&&/条件2/ #条件1并且条件2$0 #所有的列$1 #第一列$2 #第二列$3 #第三列#统计文件的行数[root@c mnt]# awk 'BEGIN{N=0}{N++}END{print N}' userfile #/etc/passwd文件的第六列没有home关键字并且以bash结尾的行awk -F : '$6!~/home/&&/bash$/{print}' /etc/passwd
[root@c mnt]# awk -F : '$6!~/^\/home/&&/bash$|sh$/{print NR}' /etc/passwd1[root@c mnt]# awk -F : 'BEGIN{N=0}/bash$|sh$/&&$6!~/^\/home/{N++}END{print N}' /etc/passwd1[root@c mnt]# awk -F : 'BEGIN{N=0}$6!~/^\/home/&&/bash$|sh$/{N++}END{print N}' /etc/passwd1
转载地址:http://cnhzi.baihongyu.com/