Perl:显示perl变量awk sed echo
当我直接使用下面的命令时,它的工作正常,但是当我试图把它放在perl脚本中时,它给出了很多错误。Perl:显示perl变量awk sed echo
my $calculate = `echo "$value" | awk -F "SP=" '{print $2}' | awk -F ";" '{print $1}' | awk -F ":" '{print $2}' | sed 's/\,/\//g'`;
数据是这样的:
HM=Happy:man,1;SP=SAD:person,3;AP=Arrogant:personality,5;MD=Mad:Dynamic,9;PR=Power:raper,10;
我想输出
person/3
你可以做到这一点使用Perl的正则表达式模式
my $calculate;
($calculate = $1) =~ tr~,~/~ if $value =~ /SP=[^:]*:([^;]*)/;
感谢您的回应...我得到的语法错误:语法错误在file.pl第7行,在“tr〜,〜/〜r”附近 –
您有一个不支持'/ r '修饰符。立即试用 – Borodin
感谢您的支持!这是完美的 !!! –
这样的事情,也许:
#!/usr/bin/env perl
use strict;
use warnings;
use v5.20;
my $data
= 'HM=Happy:man,1;SP=SAD:person,3;AP=Arrogant:personality,5;MD=Mad:Dynamic,9;PR=Power:raper,10;';
my %hash = map {m/(.*?)=(.*)$/} split(';', $data);
if ($hash{'SP'} =~ m/:(\w+),(\d+)$/) {
my $result = $1 . '/' . $2;
say $result;
}
person/3
感谢您的回复。上面的代码给出了$ result的空白值。 –
对不起,它看起来像它不在这个循环---> if($ hash {'SP'} =〜m /:(\ w +),(\ d +)$ /){ –
对我来说工作正常;它输入if语句(它不是循环,BTW)并打印'person/3'。 – Biffen
为什么不这样做纯粹的Perl?无论如何,这可能会更容易。 – Biffen
感谢您的回复...请指教我如何在纯粹的perl .. –
向我们展示一些示例输入和预期输出。机会是可以用一个单一的正则表达式来完成。 – Biffen