【问题标题】:How to extract part of the text from input file and write into another file?如何从输入文件中提取部分文本并写入另一个文件?
【发布时间】:2013-10-14 06:02:23
【问题描述】:

这是我的代码。我希望提取部分文本并写入另一个文件。代码循环不会在我选择的文本范围内停止。它一直读到单词的最后一个匹配行。请给我提意见。谢谢。例如,我需要提取 $NAME: sandy until $$.TO 然后加入 $NAME: patrick 中的内容,从 G1 开始直到 $$SRU。

文字:

$ NAME : corry  
$$.Inc s d
$$.Oc s
$$.TO

G1 ty n1 EE EE M T1 T2 $$SRU
G2 n1 y OO OO M T3 T4 $$SRU    
$$.EON

$ NAME : patrick    
$$.Inc c d
$$.Oc c
$$.TO

G1 td n3 EE EE M T5 T6 $$SRU      
G2 n3 y OO OO M T7 T8 $$SRU    
$$.EON
$ NAME : sandy    
$$.Inc k l
$$.Oc l
$$.TO

G1 td n3 FF FF M R5 R6 $$SRU      
G2 n3 y OO OO N R7 R8 $$SRU    
$$.EON

代码:

use strict;
use warnings;

open my $F1, '<', 'testing.txt' or die "failed $!";
open my $F2, '>', 'out.txt' or die "failed $!";

while (<$F1>) {
if (/^\$ NAME : sandy/../\$.TO/) {
print $F2 $_;
}
if (/^\$ NAME : patrick/../\$.EON/) {
if(/^G1/../\$SRU){
 s/G1/G1.G1o.n/g;
print $F2 $_;}
}

 }
close $F1;
close $F2;

【问题讨论】:

  • 你需要提取哪一段文字?
  • 从这里开始->$ NAME : corry $$.Inc s d $$.Oc s $$.TO G1 ty n1 EE EE M T1 T2 $$SRU G2 n1 y OO OO M T3 T4 $$SRU $$.EON-

标签: regex perl text extract


【解决方案1】:

首先,您的正则表达式中: 之前没有足够的空间,并且您的代码变得复杂......

use warnings;
use strict;

open my $fh, '<', 'in' || die "Can not open file:$!\n";;

while (<$fh>){
        print if /^\$ NAME : corry/../\$\$\.EON/;
}
close $fh;

如果您需要先将一些数据写入其他文件,您需要打开它进行写入:

open my $fh2, '>>', 'my_out_file.txt'; #open file handler $fh2 associated with file named my_out_file.txt

然后你可以打印到这个文件,就像你打印到屏幕上一样:

print $fh2 'some text here'; #print to file handler $fh2 string 'some text here'

【讨论】:

  • 谢谢!它工作正常。你能告诉我如何将选择文本范围内的 G1 替换为 G1.G1o.n 并将新文本写入另一个文件吗?
  • 其实这段文字是整个文字的简单部分。 G1.G1o.n 指等级组织。我的 perl 技能还不是标准的,所以我正在考虑使用相当老的方法将 G1 替换为 G1.G1o.n
  • 有许多小部分构成了最终的层次结构部分。 corry 和 patrick 部分是层次结构的一部分。整个层次结构在我没有在上面发布的管理器部分下。
  • 可能是因为如果我的英语不好或因为星期一,但我真的不明白你想做什么,对不起:D 如果你想以 G1 开头的行写入另一个文件,你可以这样做while (&lt;$fh&gt;){if (//..//){print $fh2 $_ if /^G1/;}}
  • 哦,这是while (&lt;$fh&gt;){if /^\$ NAME : corry/../\$\$\.EON/;{print $fh2 $_ if /^G1/;}}的意思吗?对不起,是否需要添加一些东西来创建输出文件?
猜你喜欢
  • 1970-01-01
  • 2019-09-09
  • 2021-01-23
  • 2015-12-29
  • 1970-01-01
  • 2018-06-27
  • 2023-03-18
  • 2018-02-24
  • 2016-08-14
相关资源
最近更新 更多