2014-09-24 80 views

回答

0

使用替代此:

my $string = "ad9a91/FFFF0000"; 
$string =~ s|\.+/||; 
+0

但它沒有單行有'/'字符後有多行隨機數據 – user3383729 2014-09-24 13:20:46

+0

@ user3383729對不起我的錯。已經修復我的回答 – Jens 2014-09-24 13:24:06

+0

感謝您的評論我可以使用$ _ =〜s | \。+/||; – user3383729 2014-09-24 13:34:23

1

您可以使用替換,

my $str = "ad9a91/FFFF0000"; 
$str =~ s|^.+?/||; 

或正則表達式捕獲,

$str = $1 if $str =~ m|/(.+)|s; 
2

桑達解決方案

sed 's|[^/]*/||' file 

將拆除一切直到幷包括第一/

sed 's|.*/||' file 

將刪除一切,包括最後的/

我加了兩個,因爲問題並不完全清楚字符串的格式是什麼。

awk中

awk -F/ '{$0=$NF}1' file 

該命令替換任何是最後/

+0

你應該解釋第一個和第二個版本之間的區別(第二個版本將直到最後一個斜槓替代所有斜線,如果在斜線中出現了幾個斜線) – 2014-09-24 17:49:46

+0

它基於你的示例(沒有更多的字或字符你展示)。第一個「刪除」第一個字符,直到第一個'/'和第二個像你寫「刪除」,直到最後一個。在這種情況下,它是相同的效果,而不是如果有環繞字/字符,但在這種情況下都是假的(但也超出了上下文)。 – NeronLeVelu 2014-09-25 05:50:17

+1

@CasimiretHippolyte補充說明:) – 2014-09-25 07:21:49

0
my $string = qq(sjdflksdjfsdj ad9a91/FFFF0000 slodjfsdf s); 
$string =~ s{\b(\s).*?\b/}{$1}ig; 
print $string;exit; 

後,你也可以嘗試這種分裂與任何空間或任何標籤的整條生產線。