搜索并替换 '(单引号)中包含的内容

搜索并替换 '(单引号)中包含的内容

在许多子文件夹中的各种文件中,我在大文本文件中包含以下文本,每个文本都是唯一的

Linux.Secret = 'XYZZYXZYXZYXZYXZYXZ'

我想让它全部都Linux.Secret = ''一样Linux.Secret = 'NEWSECRET'

我怎样才能做到这一点?

答案1

Linux.Secret =首先查找行首包含以下内容的所有文件:

find . -type f -exec grep -q '^Linux.Secret =' {} ';'

请注意,grep -q不会输出任何内容,它只是以状态退出,具体取决于表达式是否可以匹配。

然后,对于通过这些测试的所有文件(是常规文件并包含该文本),我们运行一个简单的 (GNU)sed命令:

find . -type f -exec grep -q '^Linux.Secret =' {} ';' \
    -exec sed -i "s/^Linux.Secret =.*/Linux.Secret = 'NewSecret'/" {} +

通过用我们想要的行替换整行,可以在文件中就地进行更改。我们通过在需要它的表达式周围使用双引号来处理单引号。

如果您需要更加小心匹配,并且仅匹配Linux.Secrets =后跟单引号中的内容:

find . -type f -exec grep -E -q "^Linux.Secret = '[^']+'" {} ';' \
    -exec sed -E -i "s/^Linux.Secret = '[^']+'.*/Linux.Secret = 'NEWSECRET'/" {} +

有关的:

相关内容