perl一行+完全匹配

时间:2010-11-18 06:14:19

标签: perl

  

可能重复:
  perl + one line smart perl command, in place grep to match unusual characters + full match

艾全都

我需要将PARAMETER字符串与以下perl行完全匹配:

 cat file  | perl -nle 'print if /\Q$ENV{PARAMETER}/'

如以下示例所示,显示

我尝试匹配:node_name

但我从文件中获取所有node_name组合名称,

同样关于1.1.1。和host_1.A等...

如何完全匹配以下参数?从文件 什么需要改变我的perl语法才能给出正确的匹配?

 more file
 param1=uplicateParam node_name
 param2=a anode_name 
 param3=bnode_name 
 param4node_name 
 param5=1.node_name 
 param6=11.11.11.11  
 param7=1.1.1.11
 param8=[1234]
 param9=* * * [@]
 param10=11.1.1.11
 param11=host_1.A
 param12=old.host_1.A


 example1

 PARAMETER=node_name
 export  PARAMETER
 cat file  | perl -nle 'print if /\Q$ENV{PARAMETER}/'

 DuplicateParam node_name
 a anode_name 
 bnode_name 
 node_name 
 1.node_name 


 Example2


 PARAMETER=1.1.1.1
 export  PARAMETER
 cat file  | perl -nle 'print if /\Q$ENV{PARAMETER}/'

 param7=1.1.1.11
 param10=11.1.1.11

 example3

 PARAMETER=host_1.A
 cat file  | perl -nle 'print if /\Q$ENV{PARAMETER}/'
 export  PARAMETER

 host_1.A
 old.host_1.A

3 个答案:

答案 0 :(得分:0)

这行如何:

param2=a anode_name

node_name收益率a anode_name

抓取

这一行:

param7=1.1.1.11

1.1.1.1收益率param7=1.1.1.11

抓取

在我看来,第一个应该产生param2=a anode_name,要么第二个应该产生1.1.1.11

答案 1 :(得分:0)

您应该尝试将字边界(\b)b完全匹配:

cat file  | perl -nle 'print if /\b\Q$ENV{PARAMETER}\b/'

答案 2 :(得分:0)

perl -nlE 'say if /\Aparam\d+=\Q$ENV{PARAMETER}\E\s*\z/' file