如何在sed中使用变量

如何在sed中使用变量,第1张

举例说明:变量a和b,使用sed的替换命令将$a替换为$b

1.eval sed 's/$a/$b/' filename

2.sed "s/$a/$b/" filename

3.sed 's/'$a'/'$b'/' filename

4.sed s/$a/$b/ filename

如果对某个文件进行更改加 -i 选项

-------------------------------------------------------

通常,我们使用sed进行变量替换的时候,替换和被替换变量都是hard-coded的。例如:

sed -n ‘/comm/p’ /tmp/test.log

如果我们用一变量var,它的值根据上下文变化

$ var=”comm”,定义了变量,那么我们在sed的使用中这样使用变量

$ sed -n ‘/’”$var”‘/p’ /tmp/test.log

注意,是用单引号包含双引号来引用变量。

最初接触这个命令的人,可能以为$var之前的单引号会结束当前的script,其实不会。

若要在文本中匹配一个范围的话,可以使用的sed匹配

$ sed -n

‘/’”$var_start”‘/{p:an/’”$var_end”‘/pba}’ /tmp/test.log

-n 关闭sed的默认输出

/$var_start/ 当数据行中查找到字符串$var_start

时开始工作,后面的是命令组{}

p打印出$var_start 这一行

:a 定义一个标签,名称为a

n

读取下一行

/$var_end/p当读入的这一行中查找到$var_end 字符串时,输出

ba 跳转到标签a

其实有个问题,应该适时跳出的,不然要等文件全部读取完,效率低了。自己改吧。

使用sed进行变量替换的时候,替换和被替换变量都是hard-coded的。

sed-n‘/comm/p’/tmp/test.log

如果我们用一变量var,它的值根据上下文变化

$var=”comm”,定义了变量,那么我们在sed的使用中这样使用变量

$sed-n‘/’”$var”‘/p’/tmp/test.log

注意,是用单引号包含双引号来引用变量。

最初接触这个命令的人,可能以为$var之前的单引号会结束当前的script,其实不会。

若要在文本中匹配一个范围的话,可以使用的sed匹配

$sed-n

‘/’”$var_start”‘/{p:an/’”$var_end”‘/pba}’/tmp/test.log

-n关闭sed的默认输出

/$var_start/当数据行中查找到字符串$var_start

时开始工作,后面的是命令组{}

p打印出$var_start这一行

:a定义一个标签,名称为a

n

读取下一行

/$var_end/p当读入的这一行中查找到$var_end字符串时,输出

ba跳转到标签a

1.sed命令使用单引号的情况下,可以使用'"$var"'引用(单引号,然后双引号,变量):

2.sed命令中使用双引号的情况下,直接`shell command`或者$(shell command)引用命令执行。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11825758.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存