Я хочу добавить строку PATH - / usr / local / bin / perl befpore в файл с помощью командной строки perl (командная строка perl должна быть в моем сценарии bash), у меня есть машина solaris
цель для добавления - / USR / местные / бен / perl перед линией $ APIDIR / scan.pl в файле и после символа - "
пожалуйста, посоветуйте, как добавить ПУТЬ - / USR / местные / бен / perl перед $ APIDIR / scan.pl так что наконец я получу
новая линия -
my $APIDIR="/usr/local/cp/api"; remark - this line shouldn’t be change
my $script="/usr/local/bin/perl $APIDIR/scan.pl";
на месте
my $APIDIR="/usr/local/cp/api";
my $script="$APIDIR/scan.pl";
Я пробую следующее, но не меняю строку:
[root@machine1a /var/tmp]# perl -p -i -e 's/\/usr\/local\/bin\/perl \$APIDIR\/scan.pl/\$APIDIR\/scan.pl/g' file
[root@machine1a /var/tmp]# more file
my $APIDIR="/usr/local/cp/api";
my $script="$APIDIR/scan.pl";
Вы можете сделать это с помощью sed, например.
sed 's|$APIDIR/scan.pl| /usr/local/bin/perl $APIDIR/scan.pl|' file >file.new
или с Perl
perl -p -i -e 's|$APIDIR/scan.pl| /usr/local/bin/perl $APIDIR/scan.pl|' file
Итак, вы хотите заменить $ APIDIR на / usr / local / bin / perl $ APIDIR? Если это так, ваше регулярное выражение обратное. Вы хотите что-то вроде:
s/\$APIDIR\/\/usr\/local\/bin\/perl $APIDIR/
Поэтому постарайтесь:
perl -p -i -e 's#\$APIDIR#\/usr\/local\/bin\/perl \$APIDIR#g' file
Я надеюсь, это то, чем ты был после -