代码之家  ›  专栏  ›  技术社区  ›  user17227456

Perl CLI代码无法追加字符串行

  •  0
  • user17227456  · 技术社区  · 2 年前

    Perl CLI代码如何直接追加一行
    下面是错误的,因为行需要删除其换行符

    $ for i in {1..7}; { echo $i ;} |perl -npe '$_= "=".$_."=" '
    =1
    ==2
    ==3
    ==4
    ==5
    ==6
    ==7
    =
    

    如果需要坚持使用np选项,则无法使其正常工作:

    $ for i in {1..7} ;{ echo $i ;} |perl -npe '$_= "=".chop($_)."=\n" '
    =
    =
    =
    =
    =
    =
    =
    =
    =
    =
    =
    =
    =
    =
    

    请解决它,非常感谢。

    1 回复  |  直到 2 年前
        1
  •  1
  •   ikegami    2 年前

    您没有指定要实现的输出。我猜你想

    =1=
    =2=
    =3=
    =4=
    ...
    

    chop 返回了删除的字符,而不是剩余的字符串。它就地修改变量。因此,以下是正确的用法:

    perl -npe'chop( $_ ); $_ = "=$_=\n"'
    

    但我们可以改进这一点。

    • 使用起来更安全 chomp 而不是 切碎 删除尾部换行符。
    • -n 表示为 -p ,通常在 -p 已使用。
    • 咀嚼 切碎 修改 $_ 默认情况下,因此不需要显式传递 $_ .
    perl -pe'chomp; $_ = "=$_=\n"'
    

    最后,我们可以从 -l .

    perl -ple'$_ = "=$_="'