[英]How to print 2 consecutive lines after a pattern in file using awk and the matched line itself
[英]How to insert lines, 2 lines after the matched line in Perl
我试图在Perl中将数据文件之一或某些字符插入到现有文件中。
例如,假设我们有“数据”文件和“ extraData”文件。 如果数据文件包含高度信息,则在“高度”之后的第一行之后立即插入extraData文件中的信息。
数据:
red fox
likes to run
Height:
120
speed:
140
额外数据:
Weight:
70
结果:
red fox
likes to run
Height:
120
Weight:
70
speed:
140
目前,我已经实现了以下代码,并且在找到“高度”之后立即打印重量信息。 我想打印高度及其信息,然后附加重量信息。
假设$ weight具有来自extraData文件的重量信息:
use File::Copy;
copy( "data", "copy" ) or die "Copy failed: $!";
unlink("data.txt");
open FILE, '<', 'copy';
open OUT, '>', 'data';
while ( my $line = <FILE> ) {
if ( grep {/Height/} $line ) {
print OUT $line;
print OUT "Weight \n";
print OUT $weight;
}
else {
print OUT $line;
}
}
结果:
red fox
likes to run
Height:
Weight:
70
120
speed:
140
任何帮助,将不胜感激,谢谢
perl -plne 'print "Weight:\n\n70\n" if(/speed/);' test.txt
应该做
我建议您阅读: perlfaq5-如何更改,删除或在文件中插入一行,或追加到文件的开头?
在这种情况下,我建议使用$INPLACE_EDIT
修改文件,并使用触发器运算符确定何时插入新数据:
use strict;
use warnings;
my $file = 'data';
local @ARGV = $file;
local $^I = '.bak';
while (<>) {
print;
print "Weight:\n70\n" if /Height/ .. /\d/ and /\d/;
}
# unlink "$file$^I"; # Optional delete backup
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.