更新文件中的行

更新文件中的行

我有一个文件,其中有一些字段。例如,

var One = "fcb";
var Two = "abc";

我怎么能够更新/替换这些行使用脚本?

我希望能够做类似的事情:

   echo -n "Enter One: "
   read  One
   echo -n "Enter Two: "
   read  Two

   sed -i $One ./file.js
   sed -i $Two ./file.js

但是,当我执行脚本时:

Enter One: fge3
Enter Two: ghj5

表明:

sed: -e expression #1, char 1: unknown command: `f'
sed: -e expression #1, char 2: extra characters after command

答案1

sed 命令看起来像

sed -i -e 's/var One =.*/var One = "'$One'";/' -e 's/var Two =.*/var Two = "'$Two'";/' file.js

编辑添加:

当心陷阱...如果用户输入foo/bar像答案这样的讨厌字符:-)

第二次编辑:

如果你不想允许坏角色那么你可以中止,例如在read One你可以添加之后:

if [[ "$One" =~ "/" ]]; then echo bad char / not allowed; exit; fi

您可以为该sed语句选择不同的字符(例如 a|代替/)并禁止这样做。

否则你需要尝试一些巧妙的引用......

One=$(echo "$One" | sed 's/\//\\\//g')

相关内容