📜  带变量的 sed - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:09:42.789000             🧑  作者: Mango

带变量的 sed - Shell-Bash

介绍

sed(stream editor)是一种流编辑器,用于文本处理。它通常用于在文本处理管道中过滤和转换文本。通常sed命令主要是使用正则表达式进行匹配,对匹配到的文本进行替换、删除、添加等操作。除此之外,sed还有一个很实用的功能,就是可以带变量进行字符串替换。这个功能在一些需要根据输入的不同动态生成文本的场景下非常常用。

用法

sed命令的替换模式/s/old/new/g中,old是需要被替换的文本,new是替换成的新文本,g表示一行中所有匹配的文本都会被替换。在替换模式中使用变量需要注意的是,在sed命令中使用"包含需要替换的文本以及变量,因为单引号不会展开变量。另外,在"中需要使用$符号加上变量名,这样sed会自动替换成变量的值。

比如,我们有一个文件名叫做test.txt,它包含如下内容:

hello world

现在我们想要将hello替换成一个变量${VAR}的值,VAR可以在脚本中进行定义。我们可以这样写:

VAR="foo"
sed "s/hello/${VAR}/g" test.txt

这条命令会输出:

foo world

其中,s/hello/${VAR}/g表示将hello替换成${VAR}${VAR}会被自动替换成变量值foog表示全局替换。

总结

带变量的sed命令可以帮助我们在脚本中动态生成文本。在sed替换模式中使用变量需要注意使用"包含需要替换的文本以及变量,并且需要使用$符号加上变量名。在有需要的场景下,可以灵活运用这个功能进行文本处理。

示例代码
#!/bin/bash

VAR="foo"
sed "s/hello/${VAR}/g" test.txt
返回格式
# 带变量的 sed - Shell-Bash

## 介绍

`sed`(stream editor)是一种流编辑器,用于文本处理。它通常用于在文本处理管道中过滤和转换文本。通常`sed`命令主要是使用正则表达式进行匹配,对匹配到的文本进行替换、删除、添加等操作。除此之外,`sed`还有一个很实用的功能,就是可以带变量进行字符串替换。这个功能在一些需要根据输入的不同动态生成文本的场景下非常常用。

## 用法

`sed`命令的替换模式`/s/old/new/g`中,`old`是需要被替换的文本,`new`是替换成的新文本,`g`表示一行中所有匹配的文本都会被替换。在替换模式中使用变量需要注意的是,在`sed`命令中使用`"`包含需要替换的文本以及变量,因为单引号不会展开变量。另外,在`"`中需要使用`$`符号加上变量名,这样`sed`会自动替换成变量的值。

比如,我们有一个文件名叫做`test.txt`,它包含如下内容:

hello world


现在我们想要将`hello`替换成一个变量`${VAR}`的值,`VAR`可以在脚本中进行定义。我们可以这样写:

```bash
VAR="foo"
sed "s/hello/${VAR}/g" test.txt

这条命令会输出:

foo world

其中,s/hello/${VAR}/g表示将hello替换成${VAR}${VAR}会被自动替换成变量值foog表示全局替换。

总结

带变量的sed命令可以帮助我们在脚本中动态生成文本。在sed替换模式中使用变量需要注意使用"包含需要替换的文本以及变量,并且需要使用$符号加上变量名。在有需要的场景下,可以灵活运用这个功能进行文本处理。

示例代码
#!/bin/bash

VAR="foo"
sed "s/hello/${VAR}/g" test.txt