sed 正则匹配 替换变量
时间: 2023-10-13 11:04:45 浏览: 265
你可以使用`sed`命令来进行正则表达式的匹配和变量的替换。下面是一个例子:
```shell
#!/bin/bash
# 定义一个变量
name="John"
# 使用 sed 命令替换变量
echo "Hello, my name is John." | sed "s/John/$name/g"
```
在上面的例子中,`sed`命令使用正则表达式`s/John/$name/g`来将字符串中的`John`替换为变量`$name`的值。输出结果将是`Hello, my name is John.`中的`John`被替换为`John`变量的值。
注意,如果你在使用单引号包围 sed 命令时,变量将不会被替换。所以确保使用双引号来包围 sed 命令,以便能够替换变量。
相关问题
写一个makefile脚本,内容为使用perl和sed做正则匹配替换
Makefile是一个构建工具,它通过一系列规则描述如何从源文件生成目标文件。如果你想用Perl和sed进行正则匹配并替换,你可以创建一个简单的Makefile,如下所示:
```makefile
# 定义变量
SOURCES = input.txt
OUTPUT = output.txt
PATTERN = old_text
REPLACEMENT = new_text
# 使用Perl命令进行替换
%.new: %.txt
sed -i "s/${PATTERN}/${REPLACEMENT}/g" $< > $@
# 编译规则
all: $(OUTPUT.new)
# 清理规则
clean:
rm -f $(OUTPUT.new)
```
在这个例子中,`input.txt`是输入文件,`output.txt.new`是处理后的输出文件。`s/${PATTERN}/${REPLACEMENT}/g`是正则表达式模式,表示将所有旧文本`old_text`替换为新文本`new_text`。
你可以按照以下步骤运行这个Makefile:
1. 创建两个文本文件,如`input.txt`和`Makefile`。
2. 在`input.txt`中包含你要替换的内容。
3. 运行`make all`,这会执行替换操作并将结果保存到`output.txt.new`中。
4. 如果你想清理临时文件,可以运行`make clean`。
阅读全文