博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文本处理的一些命令(grep、sed、awk)
阅读量:3961 次
发布时间:2019-05-24

本文共 4046 字,大约阅读时间需要 13 分钟。

文本处理的一些命令(grep、sed、awk)

1.grep

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次
  • 请显示系统中能被su命令切换的用户名称
[root@node1 mnt]# grep -E "bash$|sh$" /etc/passwd | cut -d : -f 1rootwestoslee

2.sed

链接: .

命令格式: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
  • Apache_port.sh
    此脚本后介入数字
    http的端口就改为此数字
    假设selinux为关闭状态
[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

3.awk

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
  • 统计能在系统中su切换的并且用户家目录不在/home下的用户数量
[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/

你可能感兴趣的文章
Ruby 教程(二)
查看>>
Android——简介
查看>>
Ruby 教程(三)
查看>>
Ruby 教程(四)
查看>>
GHOST后只剩下一个分区后的解决方法
查看>>
局部变量、全局变量、对象变量、类变量
查看>>
手动测试 VS 自动测试
查看>>
QTP基本使用——WORD
查看>>
QTP基本使用——Excel
查看>>
QTP基本使用——检查焦点
查看>>
排序算法之一
查看>>
ArrayList与Vector的区别
查看>>
QTP之描述性编程Descriptive Programming(一)
查看>>
面试题目之一
查看>>
File和Dir类介绍(一)
查看>>
Ruby之————XML创建与解析
查看>>
Ruby之————访问 FTP
查看>>
接触OSPF
查看>>
TCP/IP之一
查看>>
TCP/IP之二
查看>>