Bash 如何替换包含变量的行?

Bash 如何替换包含变量的行?,bash,sed,glob,Bash,Sed,Glob,我有一个bash脚本,我想用它来用字符串替换一些行,并在行的末尾添加一个日期: #/bin/bash 今天=`date'+%Y\%m\%d\%H\%m\%S`; sed-i'3s/*/CONFIG\u LOCALVERSION=/'~/Desktop/file1 file2。。。 另外,我可以对以“file”等字符串开头的一系列文件执行此操作吗?要在bash中使用变量展开,变量必须是非引号或双引号。单引号将阻止扩展。另一方面,如果您有一个目录3s包含以开头的文件,则希望避免在3s/*/中扩展*

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

#/bin/bash
今天=`date'+%Y\%m\%d\%H\%m\%S`;
sed-i'3s/*/CONFIG\u LOCALVERSION=/'~/Desktop/file1 file2。。。

另外,我可以对以“file”等字符串开头的一系列文件执行此操作吗?

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

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

#/bin/bash
今天=$(日期'+%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*

thx,如果我想在某些文件中找到一个字符串并替换为所需的字符串,该怎么办?我在一个目录中有g3-*命名的文件,希望在其中找到“本地版本”并替换为“在线版本”因此,您希望匹配特定的模式,而不是盲目地修改每个文件的第三行?请将搜索正则表达式替换为
*
。如果您想在所有行上进行替换,请去掉前导的
3
。例如,
sed-i的/CONFIG\u LOCALVERSION=local version/CONFIG\u LOCALVERSION='“$today”/'~/Desktop/g3-*