• 三剑客-grep-awk-sed


    三剑客-grep-awk-sed

    grep

    格式:

    grep 参数 过滤文件内容 文件名称

    cat file|grep '过滤的内容'

    ​ 参数: -v 取反

    ​ -E 支持扩展正则 | 或者 egrep ‘$|#’

    ​ -n 显示过滤内容的行号

    ​ -o 查看匹配过滤过程

    例:

     [root@oldboyedu ~]# grep root passwd
    			root:x:0:0:root:/root:/bin/bash
    			[root@oldboyedu ~]# grep root passwd -o
    			root
    			root
    			root
    

    awk

    awk 过滤内容和统计数据

    格式:

    ​ awk '/匹配模式/{动作}' file

    ​ cat file|awk '模式{动作}'

    参数:

    ​ awk中 动作的逗号 表示空格
    ​ awk 内置变量
    ​ $1 $2 过滤列
    ​ NR 过滤行号
    ​ , 即空格
    ​ NF 最后一列的列号

    ​ -F 指定分隔符

    例:

    只有模式没有动作 默认输出模式匹配到的内容
    	 [root@oldboyedu ~]# awk '/root/' passwd 
    	  root:x:0:0:root:/root:/bin/bash
    	  
        [root@oldboyedu ~]# awk '/root/,/adm/' passwd    #过滤出从root到adm的行
    	root:x:0:0:root:/root:/bin/bash
    	bin:x:1:1:bin:/bin:/sbin/nologin
    	daemon:x:2:2:daemon:/sbin:/sbin/nologin
    	adm:x:3:4:adm:/var/adm:/sbin/nologin
    
    	[root@oldboyedu ~]# awk 'NR==1' passwd           #过滤行号等于1的行
    	root:x:0:0:root:/root:/bin/bash
    	
    	[root@oldboyedu ~]# awk -F: '$3==0' passwd       #-F指定分隔符是冒号: $3是第三列  以:为分隔符过滤出第三列等于0的行
    	root:x:0:0:root:/root:/bin/bash
    
    	[root@oldboyedu ~]# awk -F: '$3>0' passwd        # 以:为分隔符过滤出第三列等于0的行
    	bin:x:1:1:bin:/bin:/sbin/nologin
    	daemon:x:2:2:daemon:/sbin:/sbin/nologin          #第三列数值为用户的uid号
    	adm:x:3:4:adm:/var/adm:/sbin/nologin
    	lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    	
    	
    	模式+动作              #过滤出root到adm的行中的第一列信息
    	[root@oldboyedu ~]# awk -F: '/root/,/adm/{print $1}' passwd         
    	root
    	bin               
    	daemon
    	adm
    
    	 
    	 输出行号            #过滤行号,输出第一列信息--→行号
    	 [root@oldboyedu ~]# awk -F: '{print NR,$0}' passwd 
    		1 root:x:0:0:root:/root:/bin/bash
    		2 bin:x:1:1:bin:/bin:/sbin/nologin
    		3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
    		4 adm:x:3:4:adm:/var/adm:/sbin/nologin
    		5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    		
    		
    		
    	wc 统计数量
    	   -l 统计行号 
    	   -L 统计文件中最长的行的长度
    	 
    
    	[root@oldboyedu ~]# awk -F: ' $3>0 && $3<1000' /etc/passwd|wc -l
    	22                                                    #过滤uid大于3和小于1000的行,wc -l 进行统计,由此可过滤出系统中的虚拟用户
    	[root@oldboyedu ~]# awk -F: '$3==0' /etc/passwd
    	root:x:0:0:root:/root:/bin/bash                       #过滤uid等于0的行
    	[root@oldboyedu ~]# awk -F: '$3==0' /etc/passwd|wc -l
    	1                                                     #过滤uid等于0的行 wc -l  进行统计
    	[root@oldboyedu ~]# awk -F: '$3>=1000' /etc/passwd|wc -l
    	3
    	
    	
    	
    
    

    sed

    sed 取行 过滤字符串 替换
    格式:
    sed '/过滤字符串/' file
    cat file|sed '/过滤字符串/'

    参数:

    ​ -n 取消默认输出
    ​ -i 修改源文件
    ​ sed执行过程:
    ​ 一行一行的处理
    ​ 如果对当前的行 没有动作 默认输出到屏幕

    ​ sed 增 删 改 查

    例:

    sed 之 查内容 
    	   按照字符串匹配
    		[root@oldboyedu ~]# sed -n '/root/p' passwd 
    		root:x:0:0:root:/root:/bin/bash
    
    		[root@oldboyedu ~]# sed -n '/^root/p' passwd 
    		root:x:0:0:root:/root:/bin/bash
    		[root@oldboyedu ~]# sed -n '/^ro/p' passwd 
    		root:x:0:0:root:/root:/bin/bash
    		[root@oldboyedu ~]# sed -n '/sh$/p' passwd 
    		root:x:0:0:root:/root:/bin/bash
    
    		[root@oldboyedu ~]# sed -n '/root/,/adm/p' passwd 
    		root:x:0:0:root:/root:/bin/bash
    		bin:x:1:1:bin:/bin:/sbin/nologin
    		daemon:x:2:2:daemon:/sbin:/sbin/nologin
    		adm:x:3:4:adm:/var/adm:/sbin/nologin
    
    		[root@oldboyedu ~]# sed -n '3p' passwd 
    		daemon:x:2:2:daemon:/sbin:/sbin/nologin
    		[root@oldboyedu ~]# sed -n '2p' passwd 
    		bin:x:1:1:bin:/bin:/sbin/nologin
    		[root@oldboyedu ~]# sed -n '1p' passwd 
    		root:x:0:0:root:/root:/bin/bash
    
    
    		[root@oldboyedu ~]# sed -n '1,3p' passwd 
    		root:x:0:0:root:/root:/bin/bash
    		bin:x:1:1:bin:/bin:/sbin/nologin
    		daemon:x:2:2:daemon:/sbin:/sbin/nologin
    
    
    		[root@oldboyedu ~]# sed -n '$p' passwd 		# 最后一列
    		lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    
    sed之增加内容 
    		a 在n行后面追加新的内容
    		[root@oldboyedu ~]# cat test.txt
    		lidao 2
    		alex 2
    		oldboy 3
    		test 1
    		[root@oldboyedu ~]# sed '2a oldboy111' test.txt
    		lidao 2
    		alex 2
    		oldboy111
    		oldboy 3
    		test 1
    
    		
    		i 在当前行插入新的内容 
    		[root@oldboyedu ~]# sed '2i oldboy111' test.txt
    		lidao 2
    		oldboy111
    		alex 2
    		oldboy 3
    		test 1
    
    		c  替换当前整行的内容
    		[root@oldboyedu ~]# sed '2c oldboy111' test.txt
    		lidao 2
    		oldboy111
    		oldboy 3
    		test 1
    
    			
    		[root@oldboyedu ~]# sed -i '7c SELINUX=disabled' /etc/selinux/config
    		
    		w 保存当前的内容至文件 没啥用
    		
    		[root@oldboyedu ~]# sed '1,3w newfile.txt' test.txt
    		lidao 2
    		alex 2
    		oldboy 3
    		test 1
    
    sed之删除
    			格式:
    				 sed  '3d' file
    		
    			[root@oldboyedu ~]# sed  '3d' test.txt
    			lidao 2
    			alex 2
    			test 1
    			[root@oldboyedu ~]# sed  '1,3d' test.txt
    			test 1
    
    		[root@oldboyedu ~]# sed  '/root/d' passwd 
    		bin:x:1:1:bin:/bin:/sbin/nologin
    		daemon:x:2:2:daemon:/sbin:/sbin/nologin
    		adm:x:3:4:adm:/var/adm:/sbin/nologin
    		lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    
    		
    sed替换
    		sed 's#替换谁#替换成什么#g'
    		sed 's///g'
    		sed 's@@@g'
    		s   替换标志
    		g 全局替换
    		[root@oldboyedu ~]# sed 's#root#oldboy#g' passwd 
    		oldboy:x:0:0:oldboy:/oldboy:/bin/bash
    		bin:x:1:1:bin:/bin:/sbin/nologin
    		daemon:x:2:2:daemon:/sbin:/sbin/nologin
    		adm:x:3:4:adm:/var/adm:/sbin/nologin
    		lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    		oldboy:x:oldboy:var/var:sbin/login
    
    		[root@oldboyedu ~]# sed 's#200#201#g' /etc/sysconfig/network-scripts/ifcfg-eth0
    		TYPE=Ethernet
    		BOOTPROTO=none
    		NAME=eth0
    		DEVICE=eth0
    		ONBOOT=yes
    		IPADDR=10.0.0.201
    		PREFIX=24
    		GATEWAY=10.0.0.254
    
    		[root@oldboyedu ~]# sed 's#[:/0-9x]# #g' /etc/passwd|xargs -n1|sort |uniq -c|sort -rn|head
    		 25 sbin
    		 19 nologin
    		  8 bin
    		  7 var
    		  4 root
    		  4 oldboy
    		  4 bash
    		  3 sync
    		  3 spool
    		  3 shutdown
    
    		[root@oldboyedu ~]# sed 's#[:/0-9]# #g' /etc/passwd|xargs -n1|awk '{count[$1]++}END{for(i in count) print i,count[i]}'|awk '{print $2,$1}'|sort -rn|head|grep -v x
    		25 sbin
    		19 nologin
    		8 bin
    		7 var
    		4 root
    		4 oldboy
    		4 bash
    		3 sync
    		3 spool
    
    
  • 相关阅读:
    SqlServer存储过程
    SQL Server :DBLINK创建及使用
    jQuery控制TR的显示隐藏
    JAVA------22.git导出项目,启动项目
    JAVA------21.String转时间,并向前推进一天
    JAVA------20.经纬度转换省市区
    JAVA------20.图片中插文字和图片
    JAVA------19.生成二维码并插入logo
    JAVA------18.excel导出
    JAVA------17.charles(青花瓷)抓包工具,适用安卓
  • 原文地址:https://www.cnblogs.com/yangte/p/13964111.html
Copyright © 2020-2023  润新知