ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

三剑客之awk

2021-12-22 22:03:52  阅读:137  来源: 互联网

标签:代表 分区 打印 awk print txt 三剑客


目录

image

磁盘的分区与挂载

// 查看硬盘指令

	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遍
			
	

image

标签:代表,分区,打印,awk,print,txt,三剑客
来源: https://www.cnblogs.com/BBSDBZ/p/15721292.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有