2014-01-17 3 views
-2

У меня есть список (значения из массива), который выглядит следующим образом:только возвращает строку после шаблона/ключевого слова

order_reply1={order_tag=1286955 
order_reply2={order_tag=1286956 
order_reply3={order_tag=1286957 
order_reply4={order_tag=1286958 
order_reply5={order_tag=1286959 
order_reply6={order_tag=1286960 
order_reply7={order_tag=1286961 

От этого, я хочу, чтобы вернуть значение после order_tag =. Как я могу это сделать? Я не хочу ничего перед этим «ключевым словом». Причина в том, что я хочу, чтобы возвращаемые теги продолжали запрашивать базу данных с этими ссылками.

+3

Есть несколько способы сделать это в Perl, какой код вы уже пробовали? А где вы застряли? –

ответ

0
#!/usr/bin/perl 
use strict; 
use warnings; 

my @list = (
'order_reply1={order_tag=1286955', 
'order_reply2={order_tag=1286956', 
'order_reply3={order_tag=1286957', 
'order_reply4={order_tag=1286958', 
'order_reply5={order_tag=1286959', 
'order_reply6={order_tag=1286960', 
'order_reply7={order_tag=1286961', 
); 

s/.*order_tag=// for @list; 
# @list now contains only the tag values 
print join("\n",@list); 
0
sed 's/.*order_tag=//' YourFile 
# -> 1286961 

sed 's/.*\(order_tag=\)/\1/' YourFile 
# -> order_tag=1286961 
+0

Спасибо, это то, что мне нужно! – user3206886

0

Grep является правильным инструментом:

kent$ grep -Po '.*order_tag=\K.*' f 
1286955 
1286956 
1286957 
1286958 
1286959 
1286960 
1286961 
0

На пути к двери, но, вот еще один способ с расколом на символ =:

perl -e '$o=q(order_reply1={order_tag=1286955); $n=(split /=/, $o)[-1]; print "o= $o\n"' 
Смежные вопросы