linux三剑客之sed 流媒体编辑器

image

linux文本处理命令

# sort 命令  可以把文件的内容加以排序

	格式是: 
    	sort + [文件名]
		'排序默是按照第一个字母排序的 而且是同类和同类之间排序 排序的大小是按照ASCII码来的'
        
	# sort的参数
    	
        sort  -n + [文件名] # 依照数值的大小来进行排序

        sort  -r + [文件名] # 反向排序

        sort  -k2 + [文件名] # 以第几列进行排序

        sort  -t' ' + [文件名] # 指定分割符 默认是以空格作为分割符

        
        
# uniq 命令	用于去重 不过只能去重相邻的 所以一般和sort命令一块使用

	格式为:
    	uniq + [文件名]
        
	# uniq 参数

    uniq -c + [文件名] # 在列旁边显示该行出现的次数

    uniq -d + [文件名] # 仅显示重复出现的内容

    uniq -u + [文件名] # 仅显示出现过一次的内容
    
    
# cut命令 用来显示行中的指定部分 删除文件中的指定字符

	格式为:
    	cut -d '指定分割符' -f'指定内容' + [文件名]
        
	# cut 参数

    -d # 指定字段的分隔符 默认分割符为 'TAB'
    -f # 显示指定字段内容
    
    
    

# tr命令 替换或删除命令

	格式:
    	cat + [文件名] | tr + [需要替换内容] + [替换内容]
        '替换字符串是一一对应提替换的'
        
	# tr 参数
    	-d 删除字符
        格式 : cat + [文件名] | tr -d + [需要删除内容] 




# wc命令  统计和计算数字


	# wc 参数
	
        wc -c + [文件名] # 统计文件中的字节数

        wc -l + [文件名] # 统计文件的行数

        wc -w + [文件名] # 统计文件中单词的个数 单体是指连一块的字符串 默认是空白字符作为分隔符

image

三剑客之sed命令

# sed是linux中流媒体编辑器

	 # 三剑客各自的功能
    	 
        grep  是用来过滤文本
        
        sed   是用来修改文本
        
        awk   是用来处理文本
        
        
# sed的格式:

	sed + [参数] + '处理规则' + [操作对象]
    
    
# sde 参数

    -e 允许多项编辑  例: sed -e '1d' -e '3d' + [文件名]

    -n 取消默认输出	就是把显示给取消了

    -i 就地编辑		就是把展示的内容直接写入文件中

    -r 支持拓展正则	普通正则默认支持
    例: sed -r '/123/d' + [文件名]

    -f 指定某个文件类写入的正则规则 然后通过-f参数来操作某文件
    例: sde -f + [指定的正则] + [需要操作的文件]



    
# sed 的编辑模式
	
    d	删除
    
    p	打印
    
    a	在当前行后添加一行或者多行  
    	例: sed '5a666' + [文件名]   在第五行之后添加666
    
    c	用新的文本修改或者替换当前行
    	例:sed '5c666' + [文件名]	把第五行内容修改为666
        
	i	单独使用时在当前行之前插入文本
    	例:sed '5i666' + [文件名]	把第5行插入666
        
	r	在文件当中读内容 病例区插入到指定行的后一行
    	例:sed '3r 1.txt' + 2.txt	代表把1.txt全部内容插入到2点txt的第四行
        
	w	将指定行写入文件 	清空写入文件 并且把指定文件内容全部写入到写入文件中
    	例:sed '2w 1.txt' + 2.txt	将2.txt的内容写入到1.txt
        
	y	将字符转换成另一个字符
    
    	例:sed '2y/a/A/' 2.txt	把2.txt中的小写a全部替换成大写A
        
	s	减字符串转换成另一个字符串  s模式是放在正则的前面 
    
    	例:sed 's/10/50/' 2.txt 把2.txt的11行替换成了个50 每行只会替换一次
        
	g	全部执行 配合s使用
    
    	例:sed 's/10/50/g' 2.txt  把2.txt的所有10都替换成个50 	g本身是没有替换功能的
        
	i	和s模式配合使用时 忽略大小写
    
    	例:sed 's/10/50/gi' 2.txt  把2.txt的所有10都替换成个50 并且忽略大小写
    
    	
       
        
# sde 定位 

    1.数字定位法	# 指定行号

        例: sed '3d' + [文件名] 
        	sed '2,3d' + [文件名]  代表定位2到3行 
        
    2.正则定位法
    
        例:sed '/g/d' + [文件名] 
       	    sed '^/g/d' + [文件名]  g开头的都删了
        
    3.数字和正则定位法
    
        例:sed '3,/^g/d' + [文件名]  第三行到g开头的都删除
           
    4.正则正则定位法
    
    	例: sed '/^g/,/^j/d' + [文件名]  	g开头的到j开头的都删除
        
        
        
    

image

补充知识


正则匹配时 & 就代表前面匹配的内容

	sed 's/.*/%&/g' 3.txt
    	代表把3.txt中的每一行都添加上%
        

image

posted @ 2021-12-21 19:39  BBSDBZ  阅读(52)  评论(0)    收藏  举报