我在shell脚本中有一个变量,
var=1234_number
我想替换除$ var的整数以外的所有内容..如何使用perl onliner进行此操作?
答案 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手册中的“参数扩展”。