a=system,如何将sed '\/\/ .*system/d’命令中的system用$a表示
时间: 2024-10-15 15:15:34 浏览: 12
在`sed`命令中,如果你想将字符串"system"替换为变量`$a`,你需要先设置这个变量,然后在命令里引用它。由于`sed`本身并不支持直接使用shell变量,你可以先在外部环境中设置变量`a`,然后将该值传递给`sed`。以下是步骤:
1. 设置变量`a`:
```bash
export a="your_value"
```
2. 将`system`替换为`$a`,这里需要通过管道(`|`)将变量的值传递给`sed`:
```bash
echo "$a" | sed -e 's/\//\n/g' -e '/^.*\n\(your_value\).*/d'
```
或者如果你希望在一行命令中完成,可以保存`$a`到一个临时文件,然后在`sed`命令中读取这个文件:
```bash
echo "$a" > temp.txt
sed -i '/^\/.*temp.txt/d' file.txt
rm temp.txt
```
这样`sed`会查找以`/`开头,后面跟着`temp.txt`的内容并删除。
请注意,上述例子假设`your_value`是你想要`sed`替换的实际内容,并且`file.txt`是要处理的文件名。如果`a`是从其他脚本传递过来的,确保路径和内容适配。
相关问题
sed -i -e 's/^Type=.*/Type=simple/g' -e '/ExecStart=/{s/\/usr\/sbin\/sshd/\/usr\/local\/sbin\/sshd/g}' /usr/lib/systemd/system/sshd.service
这是一个使用sed命令进行文本替换的示例命令。它将编辑位于`/usr/lib/systemd/system/sshd.service`路径下的`sshd.service`文件。
该命令的作用是:
1. 将文件中以"Type="开头的行替换为"Type=simple"。
2. 在包含"ExecStart="的行中,将"/usr/sbin/sshd"替换为"/usr/local/sbin/sshd"。
请注意,使用`-i`选项将直接在原始文件中进行修改,而不是在标准输出中显示结果。
执行此命令需要管理员权限。确保您具有足够的权限并了解对系统文件进行修改的风险。
如果您想查看修改后的文件内容,请执行以下命令:
```
cat /usr/lib/systemd/system/sshd.service
```
请注意备份原始文件以防止意外修改。
sh 语言 set BASE_CASE = echo $1 | awk '{print toupper($0)}' echo $BASE_CASE set CASE = echo $2 | awk '{print toupper($0)}' echo $CASE set base_tc = ddr_system_$1_tc001 set base_veq = ddr_system_$1_vsequence set tc = ddr_system_tc_$2 set veq = ddr_system_$2_vsequence set tc_path = $ddr_tc_path/lpddr/lpddr_system/testcase set veq_path = $ddr_tc_path/lpddr/lpddr_system/vsequence cp -rf ${veq_path}/${base_veq}.sv ${veq_path}/${veq}.sv cp -rf ${tc_path}/${base_tc}.sv ${tc_path}/${tc}.sv sed -i "s/$1/$2/g" ${veq_path}/${veq}.sv sed -i "s/$1/$2/g" ${tc_path}/${tc}.sv sed -i "s/${BASE_CASE}/${CASE}/g" ${veq_path}/${veq}.sv sed -i "s/${BASE_CASE}/${CASE}/g" ${tc_path}/${tc}
这段代码还是 shell 脚本,只是中间的赋值语句的语法格式不太对,应该使用 `=` 而不是 `=`,应该是这样的:
```
BASE_CASE=`echo $1 | awk '{print toupper($0)}'`
echo $BASE_CASE
CASE=`echo $2 | awk '{print toupper($0)}'`
echo $CASE
base_tc=ddr_system_$1_tc001
base_veq=ddr_system_$1_vsequence
tc=ddr_system_tc_$2
veq=ddr_system_$2_vsequence
tc_path=$ddr_tc_path/lpddr/lpddr_system/testcase
veq_path=$ddr_tc_path/lpddr/lpddr_system/vsequence
cp -rf ${veq_path}/${base_veq}.sv ${veq_path}/${veq}.sv
cp -rf ${tc_path}/${base_tc}.sv ${tc_path}/${tc}.sv
sed -i "s/$1/$2/g" ${veq_path}/${veq}.sv
sed -i "s/$1/$2/g" ${tc_path}/${tc}.sv
sed -i "s/${BASE_CASE}/${CASE}/g" ${veq_path}/${veq}.sv
sed -i "s/${BASE_CASE}/${CASE}/g" ${tc_path}/${tc}
```
注意,在 shell 中,变量赋值时不能有空格,应该使用 `=` 而不是 `=`。
阅读全文