三剑客之awk

目录

三剑客之awk

磁盘的分区与挂载

// 查看硬盘指令

	lsblk
        
// 查看挂载状态
        
	df -h
        
// 硬盘分区的两种指令
        
	fdisk	适用于分区2TB以下的(分2TB以上的会报错)
	gdisk	适用于分区2TB以上的(2TB以下的也可以分)	此功能需要从晚上下载
        
// 磁盘分区的命令
        
	fdisk + [新硬盘的路径]	(一般在/dev/sdn/)

// 硬盘分区的流程
        
	1.执行分区命令	fdisk
			↓
	2.输入 n 新增分区
			↓
	3.分区内容选择	p (主分区)		e(逻辑分区)  默认是p
			↓
	4.选择分区的编号	fdisk (最多分4个)		gdisk(最多120个)	
			↓
	5.选择初始桶容量和最大桶容量	默认最小2048字节	最大容量选择可以再后面加上单位
			↓
	6.输入 p 打印分区状态	(不是必须的步骤)
			↓
	7.输入 w 写入到磁盘并且退出
			↓
	8.输入 mkfs.xfs + [文件系统的分区路径]	格式化文件系统
			↓
	9.格式化后就可以输入 mount + [磁盘分区路径] + [磁盘挂载路径]	进行磁盘的挂载
			↓
	10.输入 df -h 查看挂载信息
       

三剑客之awk

# awk 主要的作用就是用来格式化文本


# awk的语法

	awk + [参数] + [处理规则] + [操作对象]
    
    
# 参数 

	-F 指定文本分隔符 (默认是空格作为分隔)
    
    	例: awk -F: '{print $NF}' + [文件名]

# awk的生命周期

	1. 接受一行作为输入
	2.把刚刚读进来内容的进行分解
	3.使用处理规则进行匹配和解析
	4.输入一行 赋值给¥0 直至处理完成  (类似于for循环中的i)
	5.把处理完成之后的所有数据交给END{}来进行再次处理

# awk处理规则的执行流程
	
    'awk sed grep 都是读一行处理一行 为了防止内存溢出 类似于for循环'
	
	1.BEGIN{}
	2.//
	3.{}
	4.END{}

# awk的预定义变量	(可以当成python中的内置函数)、
	
	$0	代表当前行
    	例:awk -Fs '{print $0 "***j****************"}' 1.txt 
        	代表给1.txt每行后面的文件都添加打印 ***j****************
    
    $n	代表第n列 	横为行 竖为列
    	例:awk -Fs '{print¥2 "***"}' 1.txt
        	代表给1.txt中以s为分割的第二列后面添加***
    
    NF	用来记录当前行的段数 也就是分割的段数
    	例;awk -Fs '{print $0 "***"NF"***" }' 1.txt
        	代表给1.txt中以s分割的每一个文件统计分割的段数
		'也可和$配合 $代表每一行 NF代表列数 $NF就代表最后一列 '
    
    NR	用来记录行号 是文本的行号 类似于计数器
    	例:awk -Fs '{print NR "---" $0}' 1.txt
        	代表给1.txt中每一行内容前面都加上行号和---
    
    FS	指定分隔符(作用与文本)  (也就是前面的-F参数) 	FS自定义的分隔符优先级高于默认的-F
    	例:awk 'BEGIN = {FS = 5} {print NR , $0} 1.txt
            代表给1.txt中的每一行显示行号 以自定义的5作为分割
    
    OFS 指定分隔符(作用打印显示) (,代表打印分割 默认是空格 指定之后就是自己指定的符号)
    	例:awk -FS 'BEGIN {OFS= "///"} {print NR , #0 }'
            代表给1.txt中的每一行添加行号 分割用///来表示
            
	
# awk的函数

    print		打印
    printf		格式化打印
        %s	字符串占位
        %d	数字
        
	例: awk -Fs '{printf "|%-15s|%-15s|\n" , NF , $0}' 1.txt 
            代表把1.txt中的每一行添加行号 用格式化输出 用|分隔开	-15是左对齐 +15是右对齐  15是15个字符
            
	'函数只能在{}循环里面应用'

    
# awk中的定位
	
	1.正则
    	awk -Fs 'BEGIN{OFS = "***"}/u/{print NR ,$0}' 1.txt         
        	代表把1.txt中的匹配到包u的显示出行号
    	
	2.比较表达式
    
        >
        <
        >=
        <=
        ~	 包含 	正则匹配
        !~	不包含
        
        awk -Fs 'BEGIN{OFS = "***"}$NF ~ /a/{print NR ,$0}' 1.txt 
        	代表把1.txt中匹配到结尾包含a的列添加行号

    	awk -Fs 'BEGIN{OFS = "***"}$0>100{print NR ,$0}' 1.txt 
        	代表把1.txt中匹配到大于100的添加行号
    
	3.逻辑表达式
    
    	&&	和 与 and
		||  或	 or
		!  非	not
	
		例:awk 'BRGIN{OFS = "/*/"} $3 + $4 > 100 && $3 + $4 < 200 {print $0}' 1.txt
			代表把1.txt第三列加第四列大于100并且小于200的的打印出来
    
	4.算术表达式
    
    	例:awk 'BRGIN{OFS = "/*/"} $3 + $4 > 100 {print $0}' 1.txt
			代表把1.txt第三列加第四列大于100的的打印出来
            
    
	5.条件表达方式 (匹配的是文本外的内容 比如行号啊结果啊之类的)
    
    	==
        >
        <
        >=
        <=
        
	例:awk 'BRGIN{OFS = "/*/"} NR == 5 {print $0}' 1.txt
        代表把1.txt中的第三行打印出来
        
    
	6.范围表达式
    
		例:awk 'BRGIN{OFS = "/*/"}/root/,/lll/ {print $0}' 1.txt
		代表把1.txt中root开头到ll开头的打印出来的打印出来
    
   
# 流程控制 也就是循环

	if 
		例:awk -Fs 'BRGIN{OFS = "/*/"}{if($0 > 0){print $0} else {print "小于"}}' 1.txt
        	 代表把1.txt中所有大于0的打印 小于0的打印“小于”
		
    for
		例:awk -Fs 'BRGIN{OFS = "/*/"} {for( i = 0 ; i < 10 ; i++) {print $0} }' 1.txt
        	代表for循环每一行并且打印10遍
        
	while
		例:awk -Fs 'BRGIN{OFS = "/*/"} {i = 1 ; while( i < 10 ) {print $0 , i++} }' 1.txt
            代表循环打印每一行10遍
			
	

三剑客之awk

上一篇:linux之三剑客练习


下一篇:Shell脚本 - awk