如何替换包含变量的行?

时间:2015-06-02 20:03:03

标签: bash sed

我有一个bash脚本,我想用它来替换一些字符串的行,并在行尾添加一个日期:

#! /bin/bash

today=`date '+%Y_%m_%d__%H_%M_%S'`;

sed -i '3s/.*/CONFIG_LOCALVERSION=/' ~/Desktop/file1 file2 ...

另外,我是否可以为一系列以#34; file"?

等字符串开头的文件执行此操作

1 个答案:

答案 0 :(得分:0)

要在bash中使用变量扩展,变量必须是非引用或双引号。单引号将阻止扩展。另一方面,如果您的目录*包含以3s/.*/开头的文件,则您希望避免在3s中展开.

幸运的是,您可以将字符串链接在一起,这样就可以了

#!/bin/bash

today=$(date '+%Y_%m_%d__%H_%M_%S');

sed -i '3s/.*/CONFIG_LOCALVERSION='"$today"'/' ~/Desktop/file{1,2,Foo}
  

我可以为一系列以“file”字符串开头的文件吗?

~/Desktop/file{1,2,Foo}将扩展为~/Desktop/file1 ~/Desktop/file2 ~/Desktop/fileFoo。如果您希望将桌面上的所有文件与名为“file”的名称进行匹配,请改用~/Desktop/file*