使用perl替换shell脚本中的变量

时间:2010-11-22 13:41:13

标签: perl shell

我在shell脚本中有一个变量,

var=1234_number

我想替换除$ var的整数以外的所有内容..如何使用perl onliner进行此操作?

2 个答案:

答案 0 :(得分:1)

您可能正在寻找编辑shell脚本的东西,在这种情况下,这可能就足够了:

perl -i.bak -e 's/\b(var=\d+).*/$1/' shellscript.sh

'-i'覆盖原始文件,在shellscript.sh.bak中保存副本; substitute命令查找赋值给'var'(而不是任何以'var'结尾的名字)后跟一个等号,一些数字和任何非数字,并留下数字赋值。

在示例中,它给出了:

var=1234

请注意,Perl正则表达式并非万无一失 - 它会破坏它(删除右括号)。

: ${var=1234_number}

处理所有这些可能的变体非常相当棘手:

echo $var=$other

OTOH,您可能希望消除shell脚本中变量的数字,在这种情况下:

var=$(echo $var | perl -e 's/\D//g')

你也可以使用'sed'来完成工作:

var=$(echo $var | sed 's/[^0-9]//g')

答案 1 :(得分:0)

除了shell之外,不需要使用任何东西

var=1234_abcd
var=${var%_*}
echo $var  # => 1234

请参阅bash手册中的“参数扩展”。