如何连续提取整行,例如第3行。 这些数据保存在linux的文本编辑器中。 这是我的数据:
1,julz,kath,shiela,angel
2,may,ann,janice,aika
3,christal,justine,kim
4,kris,allan,jc,mine
我希望输出如下:
3,christal,justine,kim
答案 0 :(得分:12)
以下代码段读取前三行,仅打印第三行然后退出以确保不会发生不必要的处理。
如果没有退出,脚本会继续处理输入文件,尽管你知道你没有用它。
perl -ne 'if ($. == 3) {print;exit}' infile.txt
当perlvar指出时,$.
是访问的最后一个文件句柄的当前行号。
答案 1 :(得分:7)
$ perl -ne'print if $. == 3' your_file.txt
以下是@ysth's answer的脚本版本:
$ perl -mTie::File -e'tie @lines, q(Tie::File), q(your_file.txt);
> print $lines[2]'
答案 2 :(得分:5)
如果它总是第三行:
perl -ne 'print if 3..3' <infile >outfile
如果它始终是数字值为“3”的第一列:
perl -F, -nae 'print if $F[0] == 3' <infile >outfile # thanks for the comment doh!
由于你没有说明你是如何确定这条线的,所以我提供了替代方案。
答案 3 :(得分:3)
通常,如果行不是固定长度,则必须通读文件行 直到你到达你想要的线。 Tie::File为你自动完成这个过程(虽然它会替换它的代码非常简单,我自己也很少打扰它。)
use Tie::File;
use Fcntl "O_RDONLY";
tie my @line, "Tie::File", "yourfilename", mode => O_RDONLY
or die "Couldn't open file: $!";
print "The third line is ", $line[2];
答案 4 :(得分:3)
更通用的解决方案:
open my $fh, '<', 'infile.txt';
while (my $line = <$fh>) {
print $line if i_want_this_line($line);
}
其中i_want_this_line实现了定义所需行的标准。
答案 5 :(得分:2)
您可以将文件句柄上的菱形操作符指定给列表,每个元素都是一行或一行。
open $fh, "myfile.txt";
my @lines = <$fh>;
编辑:此解决方案会抓取所有行,以便您可以访问任何所需的行,例如第3行将是$lines[2]
...如果你真的只想要一个特定的行,那就像其他的回答者那样是一个不同的解决方案。