在perl中选择变量的一部分

时间:2013-11-13 09:39:01

标签: regex perl

我对perl和regex的经验很少,而且我无法找到我的问题的答案,即:

我有这个命令来查找模式“package”并在找到的模式上面插入命令:

perl -i~ -p -e'/package/ and $_ = "/usr/bin/BigHonkingText $_\n$_"' script.sh

script.sh看起来像这样:

install -package 'Adobe Reader.pkg' -target /

install -package 'Adobe Flash.pkg' -target /

在我运行上面的perl命令后,它看起来像这样:

/usr/bin/BigHonkingText install -package 'Adobe Reader.pkg' -target /
install -package 'Adobe Reader.pkg' -target /

/usr/bin/BigHonkingText install -package 'Adobe Flash.pkg' -target /
install -package 'Adobe Flash.pkg' -target /

但我希望它看起来像这样:

/usr/bin/BigHonkingText Adobe Reader.pkg
install -package 'Adobe Reader.pkg' -target /

/usr/bin/BigHonkingTextAdobe Flash.pkg
install -package 'Adobe Flash.pkg' -target /

我想要的是在-package之后只有单引号内的部分写在找到的行之上。这可能吗?

1 个答案:

答案 0 :(得分:2)

使用正则表达式在单引号之间提取部分:

perl -i~ -pe"/package '(.*?)'/ and print qq{/usr/bin/BigHonkingText \$1\n}" script.sh