可能重复:
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
答案 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