linux - "perl -n"时跳行

标签 linux perl unix command-line

-n 参数导致 Perl 在程序周围放置一个循环,这使得它迭代文件名参数有点像 sed -nawk

现在,是否可以使用 -n 在脚本中提前跳过抓取一些即将到来的行?

#!/usr/bin/perl -wn

if (/my case/) {
  # Skip two lines
  <>; <>;
  # Do something with the line just read.
}

以上内容对我不起作用。 $_ 卡在同一行/内容。

最佳答案

对我有用:

perl -wE 'say for 1..10' | perl -ne 'if (/2/) { <>; <>; print "!$_" } else { print }'
1
!2
5
6
7
8
9
10

如果要处理接下来的两行,将它们存储在变量中。

$line1 = <>; $line2 = <>;

<>其自身不会填充 $_ - 仅在 while (<>) 的特殊情况下.

关于linux - "perl -n"时跳行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29416364/

相关文章:

perl - REST::Client:如何忽略 SSL 证书

perl - sed - 如何仅替换 csv 文件中行的匹配部分的字符串?

c - 系统调用 "open()"中的 O_TRUNC 实际上并未删除文件内容

linux - 如何查找文件中哪一列有特殊字符

bash - 设置从命名管道读取的管道而不阻塞 bash

php - 如何删除htaccess中的部分url

linux - 一堆图片转视频

php - PhantomJS 不能通过浏览器在 PHP 中运行(但可以通过命令行运行,甚至可以通过命令行运行 PHP)

c++ - realloc() 问题,未分配

Perl:访问嵌套哈希键的不同方法