替换文件中的字符串并覆盖该文件

替换文件中的字符串并覆盖该文件

我使用目录编写了脚本~/deleted(这是一个很长的脚本)。使用~/deleted整个脚本后。我想让用户通过将路径放入~/.rm.cfg.

我的文件是这样开始的:

#!/bin/bash

defaultpath=~/deleted

if [ -s ~/.rm.cfg ]
then
    defaultpath=$(head -1 ~/.rm.cfg)
fi

我需要将脚本中的每个替换~/deleted 为。$defaultpath有没有办法在命令行中执行此操作,以便保存并替换原始文件?

我无法让 perl 或 sed 工作。

答案1

sed -i 's|~/deleted|"$defaultpath"|g' file.sh

解释:

  • -i告诉sed就地修改文件。

  • s|~/deleted|"$defaultpath"|g告诉sed替换~/deleted"$defaultpath"它找到的地方。

额外功能:在第三行保留 ~/deleted

您没有要求这样做,但在示例脚本中,最好~/deleted在用于定义的第三行保持不变defaultpath。要更改~/deleted 除了第三行,使用:

sed -i -e '3n' -e 's|~/deleted|"$defaultpath"|g' file.sh

这会添加一个指示跳过第三行的sed命令。3nsed

相关内容