我在perl脚本中有这样的文本字符串
PC i5-4570/4GB/500/DVD+/-RW Drive/-RW/FREE DOS/5Y Warranty
并希望删除/中的所有内容,例如上面的行看起来像
PC i5-4570 FREE DOS/5Y Warranty
有人可以帮忙吗?
谢谢
答案 0 :(得分:1)
在不知道你想要做什么的情况下,我不得不猜测。我想知道这有帮助吗?它将字符串拆分为斜杠,选取第一个和最后两个值,并将它们传递给sprintf
进行格式化。
use strict;
use warnings;
my $string = 'PC i5-4570/4GB/500/DVD+/-RW Drive/-RW/FREE DOS/5Y Warranty';
my @fields = split qr|/|, $string;
my $new_string = sprintf "%s %s/%s\n", @fields[0, -2, -1];
print $new_string, "\n";
<强>输出强>
PC i5-4570 FREE DOS/5Y Warranty
答案 1 :(得分:0)
对于该特定字符串,您可以使用“/”字符进行拆分并连接所需的部分。除了你想保留DOS和5Y之间的最后一个斜杠。我不确定这是否有用,因为它不是通用解决方案,但这适用于该字符串,并且可以使用类似的模式。
#!/usr/bin/perl
$str = "PC i5-4570/4GB/500/DVD+/-RW Drive/-RW/FREE DOS/5Y Warranty";
@splitStr = split('/',$str);
print $splitStr[0] . " " . $splitStr[6] . "/" . $splitStr[7];
输出:PC i5-4570免费DOS / 5Y保修
答案 2 :(得分:0)
和一个班轮
echo "PC i5-4570/4GB/500/DVD+/-RW Drive/-RW/FREE DOS/5Y Warranty" | perl -p -i -e 's#(.*?)/.* (\w*/.*)$#$1 $2#g'