【发布时间】:2021-02-05 23:54:28
【问题描述】:
有没有办法在这里默认返回引用变量$1、$2 和$3?
start="a" hi="1" bye="2"
start="b" bye="3"
start="c" hi="4"
我正在使用这个命令过滤掉:
perl-ne 'print if s/.*start="([^"]+).*?hi="([^"]+).*?bye="([^"]+).*/$1 $2 $3/g'
a 1 2
有没有办法生成以下结果:
a 1 2
b null 3
c 4 null
我还搜索了默认后引用变量,但没有关于该变量的有效解决方案。例如,在 bash 中,我们使用 ${var:-null} 将 var 默认为字符串 null。
【问题讨论】:
-
不,反向引用总是指向输入字符串中的文本。使用代码逻辑来操作匹配。在 Perl 中,使用
e标志可以在 RHS 中使用代码,并调整模式以匹配可选字段。