仅在模式/关键字后返回字符串

时间:2014-01-17 14:20:05

标签: perl sed grep

我有一个列表(数组中的值),如下所示:

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 =之后返回值。我该怎么做呢?在这个“关键字”之前我不想要任何东西。原因是我希望返回的标签继续使用这些引用查询数据库。

4 个答案:

答案 0 :(得分:0)

sed 's/.*order_tag=//' YourFile
# -> 1286961

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

答案 1 :(得分: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);

答案 2 :(得分:0)

grep是正确的工具:

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

答案 3 :(得分:0)

在出门的路上,但这是另一种分裂=字符的方式:

perl -e '$o=q(order_reply1={order_tag=1286955); $n=(split /=/, $o)[-1]; print "o= $o\n"'