飙血推荐
  • HTML教程
  • MySQL教程
  • JavaScript基础教程
  • php入门教程
  • JavaScript正则表达式运用
  • Excel函数教程
  • UEditor使用文档
  • AngularJS教程
  • ThinkPHP5.0教程

文本处理的命令,三剑客之sed

时间:2021-12-21  作者:jyc666  

文本处理的命令

	域名命令
		“用于将文件内容加以排序”
		参数:
			-n :按照数值的大小排序
			-r :以相反的顺序来排序
			-k :以某列进行排序
			-t :指定分隔符,默认是以空格为分隔符

	域名命令
		“用于检查及删除文本文件中重复出现的行列,一般与sort命令相结合使用”
		参数:
			-c :在每列的旁边显示该行重复出现的次数
			-d :仅显示重复出现的行列
			-u :仅显示出一次的行列

	域名命令
		“用于显示行中的指定部分,删除文件中指定字段”
		参数:
			-d :指定字段的分隔符,默认的字段分隔符为“TAB”
			-f :显示指定字段的内容

	域名命令
		“替换或删除”
		参数:
			-d :删除字符

	域名命令
		“统计,计算数字”
		参数:
			-c :统计文件的Bytes数
			-l :统计文件的行数
			-w :统计文件中单词的个数,默认以空白字符作为分隔符

	注:在linux系统中,一段连续的数字或字母组合为一个词

image

三剑客之sed命令

		作用:修改文本,是linux中的流媒体编辑器

		域名命令的格式
			sed+[参数]+\'处理规则\'+[操作对象]

		2.参数
			-e :允许多项编辑
			-n :取消默认输出
			-i :就地编辑
			-r :支持拓展正则
			-f :指定sed匹配规则脚本文件

		3.定位
			1、数字定位法,指定行号
				sed \'3d\' 域名 
				sed \'2,3d\' 域名 

			2、正则定位法,指定正则定位
				sed \'/^g/d\' 域名

			3、数字和正则定位法
				sed \'3,/^g/d\' 域名

			4、正则正则定位法
				sed \'/^g/,/^j/d\' 域名 

		域名的编辑模式
			d :删除
			p :打印
			a : 在当前行后添加一行或多行
				sed \'2axxx\' 域名 
			c :用新文本修改(替换)当前行
				sed \'2cxxx\' 域名
			i : 在当前行之前,插入文本(单独使用时)
				sed \'2ixxx\' 域名
			r : 在文件中读内容
				sed \'2r 域名\' 域名 
			w : 将指定行写入文件
				sed \'2w 域名\' 域名 
			y : 将字符转换成另一个字符
				sed \'2y/fa/FA/\' 域名 
			s : 将字符串转换成另一个字符串(每一行只替换一次)
				sed \'s/11/22/\' 域名 
			g : 全部执行
				sed \'s/11/22/g\' 域名 
			i : 忽略大小写(跟 s 模式一起使用时)
			& :代表前面匹配到的内容

image

例题

		1、将域名中的注释行全部去掉
			sed \'/^ *#/d\' /etc/nginx/域名

		2、将域名中每一行之前增加注释
			sed \'s/.*/# &/g\' /etc/nginx/域名

		3、要求一键修改本机的ip,
			域名.100 ---> 域名.101
			172.域名   ---> 172.域名
			sed -i \'s/.100/.101/g\' /etc/sysconfig/network-scripts/ifcfg-eth[01]

		4、将/etc/passwd中的root修改成ROOT
			sed -i \'s/root/ROOT/g\' /etc/passwd

		5.删除/etc/passwd中的所有偶数行
			sed "1~2d" /etc/passwd

		6.将域名中的每一行都添加一个.bak的后缀
			sed -r "s/(.*)/\1\.bak/g" 域名

image

标签:linux编程
湘ICP备14001474号-3  投诉建议:234161800@qq.com   部分内容来源于网络,如有侵权,请联系删除。