在 perl 中回显第一组

Keo*_*Keo 1 command-line bash perl

是否有更优雅的 perl 命令?

ps -ejH | grep 'bash' | head -1 | perl -E ' if( <> =~ /(bash)/) {say $1}'
Run Code Online (Sandbox Code Playgroud)

我只想要echoPID,它是第一组字符。

Per*_*uck 5

打开 Perl autosplit。它将行拆分为数组@F(在空格上),因此$F[0]包含第一列。

ps -ejH | perl -a -E 'if (/bash/) {say $F[0]; last;}'
Run Code Online (Sandbox Code Playgroud)

你也可以去掉grepandhead命令,因为grepping是 Perl 可以做的很好的事情。

head可到呼叫被替换last它打破了隐含while(<>){...}在实行循环-a开关。在较旧的 Perls(v5.20 之前)上,您可能还需要-nswitch,但现在-a暗示-n.


虽然我喜欢 Perl,但我会用以下方法做这个特别的awk

ps -ejH | awk '/bash/ {print $1; exit}'
Run Code Online (Sandbox Code Playgroud)