Bash: Dynamic replacing with perl
本问题已经有最佳答案,请猛点这里访问。
我想用静态内容(如用户名或工作路径)以编程方式替换小占位符。
在bash中,我是否可以动态地执行Perl替换状态,比如:
1 2 | GROUPNAME="$(id -g -n $USER)" perl -pi -e 's/\(PLACEHOLDER\)/' +"$GROUPNAME" + '/g' filepath/file |
如果我也能为占位符调整这种动态行为,那将是非常好的。但首先要做的是。如何连接这些字符串?
删除
1 | echo 'hi!'t"here" # hi!there |
在这种方式生成的Perl代码,因为仅仅是一个安全的产出
你是要
1 2 | GROUPNAME="$(id -g -n $USER)" perl -i -pe's/\(PLACEHOLDER\)/'"$GROUPNAME"'/g' filepath/file |
但没有理由的Perl代码生成。这是很容易出错的。相反,请使用下面的一种:
1 2 | export GROUPNAME="$(id -g -n $USER)" perl -i -pe's/\(PLACEHOLDER\)/$ENV{GROUPNAME}/g' filepath/file |
或
1 | GROUPNAME="$(id -g -n $USER)" perl -i -pe's/\(PLACEHOLDER\)/$ENV{GROUPNAME}/g' filepath/file |