gpt4 book ai didi

linux - 在多个脚本的变量赋值中附加新路径

转载 作者:太空宇宙 更新时间:2023-11-04 10:06:43 25 4
gpt4 key购买 nike

我在我的 perl 脚本中声明了一个环境变量,如下所示。此变量在不同的 perl 文件中可能略有不同。在第一个文件中:

$ENV{MY_LIBS} = "$MY_PATH/bin:$HOME/PACKAGE1:$HOME/PACKAGE2";

在第二个文件中:

$ENV{MY_LIBS} = "$MY_PATH/bin:$HOME/MYLIBS1:$HOME/PACKAGE2";

现在假设我想将 $MY_PATH/lib 附加到所有这些文件,这样它们就像:

在第一个文件中:

$ENV{MY_LIBS} = "$MY_PATH/bin:$HOME/PACKAGE1:$HOME/PACKAGE2:$MY_PATH/lib";

在第二个文件中:

$ENV{MY_LIBS} = "$MY_PATH/bin:$HOME/MYLIBS1:$HOME/PACKAGE2:$MY_PATH/lib";

我如何在 Linux 中使用一些简单的命令来做到这一点?

最佳答案

您可以使用 Perl "one-liner"代替“Linux 中的简单命令

perl -i.bak -pe's/\$ENV{MY_LIBS}.*\K"\s*;/:$MY_PATH\/lib";/' file1 file2 ...

我假设 $MY_PATH 代表一个文字字符串,否则我不知道它来自哪里。

开关的意思是:

  • -e 表示 '' 内的内容被评估为 Perl 代码,因此程序遵循

  • -p 打开给定文件并遍历行,以便 '' 中的代码连续应用于每一行;处理后的行打印在最后

  • -i 使其“就地”编辑输入文件(它们已更改)并保留 .bak 备份

代码注释:

lookbehind型构造 \K删除所有以前的匹配项,因此不会从它之前的字符串中“消耗”任何内容;因此,更换零件会固定在所需的琴弦上。我们确实需要放回 ";,因为它在 \K 之后匹配,因此从字符串中删除(匹配时)。

关于linux - 在多个脚本的变量赋值中附加新路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52050329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com