用perl删除部分文本

时间:2014-02-26 00:51:31

标签: perl bash shell terminal

我在perl脚本中有这样的文本字符串

PC i5-4570/4GB/500/DVD+/-RW Drive/-RW/FREE DOS/5Y Warranty

并希望删除/中的所有内容,例如上面的行看起来像

PC i5-4570 FREE DOS/5Y Warranty

有人可以帮忙吗?

谢谢

3 个答案:

答案 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'