【发布时间】:2014-11-18 23:55:12
【问题描述】:
如何使用 Perl 或 sed 删除字符串中“/”之前的字符,包括“/”?
例如,这个:
ad9a91/FFFF0000
会变成
FFFF0000
【问题讨论】:
如何使用 Perl 或 sed 删除字符串中“/”之前的字符,包括“/”?
例如,这个:
ad9a91/FFFF0000
会变成
FFFF0000
【问题讨论】:
my $string = qq(sjdflksdjfsdj ad9a91/FFFF0000 slodjfsdf s);
$string =~ s{\b(\s).*?\b/}{$1}ig;
print $string;exit;
您也可以尝试使用任何空格或任何标签进行拆分。
【讨论】:
Sed 解决方案
sed 's|[^/]*/||' file
将删除直到并包括第一个 / 的所有内容
或
sed 's|.*/||' file
将删除直到并包括最后一个 / 的所有内容。
我添加了两者,因为问题并不完全清楚每次字符串的格式是什么。
Awk
awk -F/ '{$0=$NF}1' file
这会将整行替换为最后一个 / 之后的任何内容
【讨论】:
/ 和第二个就像你写“删除”直到最后一个。在这种情况下,效果相同,如果有环绕词/字符则不是,但在这种情况下两者都是错误的(但也脱离上下文)。
你可以使用替换,
my $str = "ad9a91/FFFF0000";
$str =~ s|^.+?/||;
或正则表达式捕获,
$str = $1 if $str =~ m|/(.+)|s;
【讨论】:
为此使用替换:
my $string = "ad9a91/FFFF0000";
$string =~ s|\.+/||;
【讨论】: