Bash 如何替换包含变量的行?
我有一个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/*/中扩展*
#/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-*