sed

工作原理:

        sed(streams editor)是一个文本过滤器,一次处理一行内容,先把当前处理的行存储在临时缓冲——称为“模式空间”(pattern space),然后处理缓冲区中的内容,再将结果输出到屏幕,然后继续处理下一行,不断重复直到文件末尾。这一过程中原文件内容不变,除非你使用重定向存储输出,或者使用 "-i" 选项(即inline edit,行内编辑)。
        pattern space :处理缓冲
        hold space: 这个缓冲可用作临时备份

命令格式:

sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)


常用:

# 元字符:
	^		#锚定行的开始
	$		#锚定行的结束
	.		#匹配一个非换行符的字符
	*		#匹配零或多个字符
	[]		#匹配一个指定范围内的字符
	[^]		#匹配一个不在指定范围内的字符
	\(..\)		#保存匹配的字符
	&		#代表搜索表达式
			echo "i love it" | sed s/love/**love**/		#i **love** it
	\<		#锚定单词的开始
	\>		#锚定单词的结束
	x\{m\}		#字符x重复m次
	x\{m,\}		#字符x重复m次及以上
	x\{m,n\}	#字符x重复m~n次


# 删除(d)
	sed '2d'				# delete line 2
	sed '2,5d'				# delete line 2~5
	sed '2,$d'				# delete line 2~last
	sed '/test/'d				# delete line contain "test"
	sed 's/^[ \t]*//;s/[ \t]*$//'		# 删除行前&行尾空格或者TAB


# 替换(s)
	sed s/foo/bar/				# 仅匹配第1个
	sed s/foo/bar/g				# 全行匹配
	sed s/foo/bar/4				# 仅匹配第4个
	sed -n s/foo/bar/p			# 仅打印被替换的行
	sed 's/\(foo\)/\1+/'			# foo => foo+ (\1=foo)	
	sed 's#10#100#g'			# 紧跟s的字符("#")被当作分隔符
	sed 's/\(.*\)foo\(.*foo\)/\1bar\2/'	# 替换倒数第二个“foo”
	sed 's/\(.*\)foo/\1bar/'		# 替换最后一个“foo”
	sed '/baz/s/foo/bar/g'			# 行中出现baz才替换
	sed '/baz/!s/foo/bar/g'			# 行中未出现baz才替换


# 行范围选定(,)
	sed -n /foo/,/bar/p			# print line /foo/ ~ /bar/
	sed -n 2,/foo/p				# print line 2 ~ /foo/
	sed '/foo/,/bar/s/$/_end/'		# 在line /foo/ ~ /bar/ 后面追加"_end"


# 命令组合(e)
	sed -e '1,5d' -e 's/test/check/'
	sed --expression='s/test/check/' --expression='/love/d'


# pattern & hold space相关
	sed G					# 在每行后面增加一个空行
	sed '/^$/d;G'				# 将多个空行合并成一个
	sed 'G;G'				# 在每一行后面增加两个空行
	sed 'n;d'				# 删除所有偶数行
	sed '/regex/{x;p;x;}'			# 在/regex/对应行之前插入一个空行
	sed '/regex/G'				# 在/regex/对应行之后插入一个空行
	sed '/regex/{x;p;x;G;}'			# 在/regex/对应行之前和之后各插入一个空行


# 其它
	sed -n '$='				# 打印文本总行数


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值