回答
你总是可以:
- 阅读所有的文件中,并却为一个变量。
- 拆分在阵列
- 换行符和存储变量的索引1(第二行)的写入值或n-1个位置到单独的文件
我认为这将做你想做的:
line_transfer_script.pl:
open(READFILE, "<file_to_read_from.txt");
open(WRITEFILE, ">File_to_write_to.txt");
my $line_to_print = $ARGV[0]; // you can set this to whatever you want, just pass the line you want transferred in as the first argument to the script
my $current_line_counter = 0;
while(my $current_line = <READFILE>) {
if($current_line_counter == $line_to_print) {
print WRITEFILE $current_line;
}
$current_line_counter++;
}
close(WRITEFILE);
close(READFILE);
然后,你把它想:perl的line_transfer_script.pl 2和将从file_to_read_from.txt写二号线到FIL e_to_write_to.txt。
你应该总是使用词法文件句柄,手动跟踪行号在Perl中是笨拙和不必要的。 – Ether 2010-07-29 17:23:08
也使用3 arg打开。 2 arg开放有问题。 – xenoterracide 2010-07-29 17:51:17
my $content = `tail -n +$line $input`;
open OUTPUT, ">$output" or die $!;
print OUTPUT $content;
close OUTPUT;
使用词法文件句柄和3 arg打开 – xenoterracide 2010-07-29 17:51:43
您可以用flip-flop operator和特殊变量$.
(由..
内部使用),它包含了当前的行号做本身在Perl:
# prints lines 3 to 8 inclusive from stdin:
while (<>)
{
print if 3 .. 8;
}
,或者在命令行:
perl -wne'print if 3 .. 8' <filename.txt>> output.txt
您也可以做到这一点没有的Perl:head -n3 filename.txt | tail -n1 >> output.txt
使用这样script.pl> OUTFILE(或>> OUTFILE进行追加)
此使用是优选的全球文件句柄和2 ARG开放词法文件句柄和3 ARG开放。
#!/usr/bin/perl
use strict;
use warnings;
use English qw(-no_match_vars);
use Carp qw(croak);
my ($fn, $line_num) = @ARGV;
open (my $in_fh, '<', "$fn") or croak "Can't open '$fn': $OS_ERROR";
while (my $line = <$in_fh>) {
if ($INPUT_LINE_NUMBER == $line_num) {
print "$line";
}
}
note:$ INPUT_LINE_NUMBER == $。
这是一个稍微改进的版本,可处理任意数量的行号并打印到文件。
script.pl <infile> <outfile> <num1> <num2> <num3> ...
#!/usr/bin/perl
use strict;
use warnings;
use English qw(-no_match_vars);
use Carp qw(croak);
use List::MoreUtils qw(any);
my ($ifn, $ofn, @line_nums) = @ARGV;
open (my $in_fh , '<', "$ifn") or croak "can't open '$ifn': $OS_ERROR";
open (my $out_fh, '>', "$ofn") or croak "can't open '$ofn': $OS_ERROR";
while (my $line = <$in_fh>) {
if (any { $INPUT_LINE_NUMBER eq $_ } @line_nums) {
print { $out_fh } "$line";
}
}
不要为'$ fn'写''fn'''。 – tchrist 2010-11-01 18:07:01
@tchrist为什么不呢? – xenoterracide 2010-11-03 13:38:45
因为它是一个no-op,除非你有一个重载'q(“”)操作符的对象,或者它是一个非祝福或至少是非重载的引用,你希望通过字符串化来杀死类似'HASH(0x8039e0 )'。它只是混淆了事情。如果你想要'$ fn'中包含的字符串,只需说'$ fn'。 – tchrist 2010-11-03 13:48:54
- 1. perl:在第N个位置写入文件
- 2. 如何从Python中的CSV文件中的第n行导入
- 3. 如何在文件的第一行插入新行字符(\ n)?
- 4. Perl,从两个文件读取并写入第三个
- 5. 如何从bash中的文本文件读取第n行?
- 6. 在perl中写入新行到文件
- 7. 如何使用python选择CSV文件中的每第N行
- 8. 如何使用导入从文件写入另一个文件?
- 9. 如何使用Perl将字符ALT-0146写入XML文件?
- 10. 如何使用Perl将输出写入新的外部文件?
- 11. 如何使用Perl将XML数据写入文件?
- 12. 阅读几个文件,并使用python将每个文件的第n行写入另一个文件中
- 13. 如何使用Perl从文件中提取缩写?
- 14. 如何从awk中的第(n + 3)行减去第n个?
- 15. 如何在cmd文本文件的第一行写入?
- 16. 如何使用Java运行Perl文件?
- 17. Perl来从输入文件中删除新行并写入到输出文件
- 18. 从文件中写入行
- 19. 从sql行写入文件
- 20. MATLAB:如何读取文本文件的每一行第N行?
- 21. 用Shiny Server的新行(\ n)写入文本文件
- 22. 用'\ n'向文本文件写入多行
- 23. 使用Perl将PDF文件字节写入文件?
- 24. C# - 随机写入文件 - 在第一行之前写入第二行
- 25. 如何从第N行文本开始应用`text-overflow`?
- 26. 如何从Cassandra中取第n行?
- 27. 如何使用perl重复搜索相同的文件'n'次?
- 28. 如何从Perl读取和写入XML?
- 29. 如何写列表的第n个值成csv文件
- 30. 如何使用Python将换行符写入csv作为'\ n'?
你必须告诉我们一些关于文件格式。 你的意思是'行'还是你的意思是'专栏' - 如果'专栏',他们是如何划定的? – 2010-07-29 16:56:12
按行我假设你的意思是行。 – xenoterracide 2010-07-29 17:53:03