Shell三剑客之sed命令

关于sed命令

这是一个非交互式的工具,即非交互式编辑器
一行一行匹配与处理,即根据行进行匹配后处理
默认不改变文件,只输出处理的内容

使用方式

  • sed [选项] [匹配和动作] <文件名>
#举例:
sed '1ihello' test.txt			#在第1行插入hello
	#1表示第1行
	#i表示插入
	#hello表示插入的字符串
	#test.txt表示处理的文本文件
	#这里不改变文件内容,只将处理的结果输出

选项

-n		#只输出处理行
-i		#直接修改,而不是输出

匹配

2,$		#2到最后一行
/2/		#匹配正则表达式,包含2的行
/^2/	#匹配开头为2的行

sed特殊正则

sed里有些正则和普通的正则语法不太一样,下面列出一些sed特殊语法的正则。

\+		#匹配一次或多次  
\?		#匹配零次或一次
\|		#或语法

动作

	d	#删除行
		sed '1,3d' test.xx	#删除1到3行
	a	#新增行
		sed '1a hello' test.txt	#第1行后新增hello
	i	#插入行
		sed '1i hello' test.txt	#在第1行插入hello
	c	#替换行
		sed '1c hello' test.txt	#替换匹配行为hello
		sed '/^SELINUX=/cSELINUX=disabled' test.txt
	p	#输出行(与-n选项配合)
		sed -n '2p' test.txt	#输出第2行
	s	#替换匹配字符串
		sed 's/aa/AA/' test.txt				#替换每一行遇到的第一个aa为AA
		sed '2s/2/x/' test.txt				#替换第2行的第一个2为x
		sed '/^[0-9]/s/aa/AA/g' test.txt	#替换以数字开头的行的所有aa为AA
	g	#一行里所有都匹配
		sed 's/aa/AA/g' test.txt	#替换一行里所有的aa为AA

posted @ 2019-04-20 19:56  NetRookieX  阅读(6)  评论(0编辑  收藏  举报