gpt4 book ai didi

perl - 为什么 "print/regex/? print a : print b"将 "1"放在每行之前?

转载 作者:行者123 更新时间:2023-12-01 06:57:03 27 4
gpt4 key购买 nike

当我运行下面的 Perl one-liner 时,它会打印 1在每一行的前面,我不想要它。它应该做的只是注释匹配 root 的行.

$ cat /etc/passwd | perl -ne 'print /root/ ? print "\#$_" : print $_'
1daemon:x:1:1::/:
1bin:x:2:2::/usr/bin:
#root:x:0:0:Super-User:/root:/usr/bin/bash
1sys:x:3:3::/:

最佳答案

您正在打印 print 的返回值,这是成功的所以评估为 1 .

我建议将您的代码更改为:

perl -pe '$_ = "#$_" if /root/' /etc/passwd

我在这里使用 -p切换,以便 $_总是打印。 A #/root/ 时在行首之前添加火柴。

如果你想做 print明确地,使用这个:
perl -ne 'print /root/ ? "#$_" : $_' /etc/passwd

关于perl - 为什么 "print/regex/? print a : print b"将 "1"放在每行之前?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31247172/

27 4 0