Arrays 如何从数组中删除元素的特定区域
我想从数组中删除特定范围的元素。Arrays 如何从数组中删除元素的特定区域,arrays,perl,unix,matching,area,Arrays,Perl,Unix,Matching,Area,我想从数组中删除特定范围的元素。 我有一个txt文件: Rbody ... 333 444 555 666 END Shell ... Node ... Rbody ... 333 444 555 666 END 我想做的是从我的文件中删除从单词“Rbody”开始直到单词“END”的元素 #while (<INC>) { # if (!/^RBODY/) # { # push(@alllines,$_); # } #} #while(){ #如果(!/
我有一个txt文件:
Rbody ...
333
444
555
666
END
Shell ...
Node ...
Rbody ...
333
444
555
666
END
我想做的是从我的文件中删除从单词“Rbody”开始直到单词“END”的元素
#while (<INC>) {
# if (!/^RBODY/)
# {
# push(@alllines,$_);
# }
#}
#while(){
#如果(!/^RBODY/)
# {
#推送(@alllines,$);
# }
#}
只删除了带有单词Rbody的行…我想我需要一些循环:/
Thx为您提供帮助。尝试使用两个循环。外部循环会正常读取这些行。如果它找到像
/^Rbody/i
这样的行,那么它将使用内部循环跳过所有内容,直到看到“END”:
while(已定义(my$line=)){
chomp($line);
如果($line=~/^Rbody/i){
while(已定义($line=)){
chomp($line);
如果$line eq“END”,则为最后一行;
}
}否则{
推送(@alllines,$line);
}
}
尝试使用两个循环。外部循环会正常读取这些行。如果它找到像/^Rbody/i
这样的行,那么它将使用内部循环跳过所有内容,直到看到“END”:
while(已定义(my$line=)){
chomp($line);
如果($line=~/^Rbody/i){
while(已定义($line=)){
chomp($line);
如果$line eq“END”,则为最后一行;
}
}否则{
推送(@alllines,$line);
}
}
这有点深奥,但这是一个很好的用例:
while(){
按@alllines,$\除非/^Rbody/。/^END/;
}
表达式
/^Rbody//^END/
返回false,直到$\ucode>匹配正则表达式/^Rbody/
。然后返回true,直到匹配/^END/
这有点深奥,但这是一个很好的用例:
while(){
按@alllines,$\除非/^Rbody/。/^END/;
}
表达式/^Rbody//^END/
返回false,直到$\ucode>匹配正则表达式/^Rbody/
。然后返回true,直到匹配/^END/
只需使用状态变量跟踪是否应打印当前行
use strict;
use warnings;
my $print = 1;
while (<DATA>) {
if ($print) {
$print = 0 if /^Rbody/i;
print if $print;
}
elsif (/^END$/) {
$print = 1;
}
}
使用严格;
使用警告;
我的$print=1;
而(){
如果($print){
$print=0,如果/^Rbody/i;
如果$print,则打印;
}
elsif(/^END$/){
$print=1;
}
}
只需使用一个状态变量,跟踪是否应打印当前行
use strict;
use warnings;
my $print = 1;
while (<DATA>) {
if ($print) {
$print = 0 if /^Rbody/i;
print if $print;
}
elsif (/^END$/) {
$print = 1;
}
}
使用严格;
使用警告;
我的$print=1;
而(){
如果($print){
$print=0,如果/^Rbody/i;
如果$print,则打印;
}
elsif(/^END$/){
$print=1;
}
}
不幸的是,似乎没有任何版本可以工作:
第一个版本打印每一行,其他两个版本不提供输出
我的文本如下所示:
RBODY /
sdsd
sdsdsd
sdsd
END
SHELL / 9171781 9001914 9073136 9073137 9073118 9073115
SHELL / 9171782 9001914 9073117 9073120 9073119 9073116
SHELL / 9171783 9001914 9073118 9073121 9073120 9073117
SHELL / 9171784 9001914 9073137 9073138 9073121 9073118
SHELL / 9171785 9001914 9073120 9073123 9073122 9073119
SHELL / 9171786 9001914 9073121 9073124 9073123 9073120
# [SDM:HISTORY:VERSION] = "History_Variante_DGS"
#
# S01__B70D_revo: *Autor: revo
# *Datum: 11.12.12
# *Basis: -------
# - automatischer Positionierungsprozess
# - verwendetes Dummysessionfile: Sessiondummy____au481_______LFaH3_sitzpos_S01__B70D_revo.ses
# - verwendetes Gurtsessionfile : Sessiongurt_____au481_______LFaH3_sitzpos_S01__Basi_revo.ses
# - verwendetes Sitzsessionfile : Sessionsitz_____au481__0____LFaH3_sitzpos_S01__B001_revo_k14m.ses
#
#
迄今为止的代码:
#!/usr/bin/perl
#
#print "Bitte geben sie das Dummy Include an:\n";
#chop($dummyfile = <>);
#print "\n";
#print "Bitte geben sie das Basis Include an:\n";
#chop($basisfile = <>);
#print "\n";
$dummyfile = 'Dummy_mu5070b___mvs2g__1_cb21_k19_m04F_bsd_w3_bfrei__krmi_040_.inc';
$newinc = "dummy_include.inc";
open(INC, $dummyfile);
open(NEWINC, ">$newinc");
.... missing regex
print @alllines;
#/usr/bin/perl
#
#打印“BITE geben sie das Dummy包括:\n”;
#印章($dummyfile=);
#打印“\n”;
#打印“BITE geben sie das基础包括:\n”;
#印章($basisfile=);
#打印“\n”;
$dummyfile='Dummy_mu5070b____mvs2g___1_cb21_k19_m04F_bsd_w3_bfrei___krmi_040_.inc';
$newinc=“dummy\u include.inc”;
打开(INC$dummyfile);
开放式(NEWINC,“>$NEWINC”);
.... 缺少正则表达式
打印@所有行;
不幸的是,似乎没有任何版本可以工作:
第一个版本打印每一行,其他两个版本不提供输出
我的文本如下所示:
RBODY /
sdsd
sdsdsd
sdsd
END
SHELL / 9171781 9001914 9073136 9073137 9073118 9073115
SHELL / 9171782 9001914 9073117 9073120 9073119 9073116
SHELL / 9171783 9001914 9073118 9073121 9073120 9073117
SHELL / 9171784 9001914 9073137 9073138 9073121 9073118
SHELL / 9171785 9001914 9073120 9073123 9073122 9073119
SHELL / 9171786 9001914 9073121 9073124 9073123 9073120
# [SDM:HISTORY:VERSION] = "History_Variante_DGS"
#
# S01__B70D_revo: *Autor: revo
# *Datum: 11.12.12
# *Basis: -------
# - automatischer Positionierungsprozess
# - verwendetes Dummysessionfile: Sessiondummy____au481_______LFaH3_sitzpos_S01__B70D_revo.ses
# - verwendetes Gurtsessionfile : Sessiongurt_____au481_______LFaH3_sitzpos_S01__Basi_revo.ses
# - verwendetes Sitzsessionfile : Sessionsitz_____au481__0____LFaH3_sitzpos_S01__B001_revo_k14m.ses
#
#
迄今为止的代码:
#!/usr/bin/perl
#
#print "Bitte geben sie das Dummy Include an:\n";
#chop($dummyfile = <>);
#print "\n";
#print "Bitte geben sie das Basis Include an:\n";
#chop($basisfile = <>);
#print "\n";
$dummyfile = 'Dummy_mu5070b___mvs2g__1_cb21_k19_m04F_bsd_w3_bfrei__krmi_040_.inc';
$newinc = "dummy_include.inc";
open(INC, $dummyfile);
open(NEWINC, ">$newinc");
.... missing regex
print @alllines;
#/usr/bin/perl
#
#打印“BITE geben sie das Dummy包括:\n”;
#印章($dummyfile=);
#打印“\n”;
#打印“BITE geben sie das基础包括:\n”;
#印章($basisfile=);
#打印“\n”;
$dummyfile='Dummy_mu5070b____mvs2g___1_cb21_k19_m04F_bsd_w3_bfrei___krmi_040_.inc';
$newinc=“dummy\u include.inc”;
打开(INC$dummyfile);
开放式(NEWINC,“>$NEWINC”);
.... 缺少正则表达式
打印@所有行;
这些单独的行是否都在txt文件中?另外,你是否必须以某种方式保存这些内容,还是只需要制作一个没有这些内容的文本文件?还有,是Rbody。。。333 444 555 666结束一条线,你必须移除那条线吗?@squiguy:不,这不是一条线。Rbody是第一个,第十个结束。在一些数据之间。整个数据块应该被删除,其余的数据应该分别放入我的数组中。txt文件中的每一行都是独立的吗?另外,你是否必须以某种方式保存这些内容,还是只需要制作一个没有这些内容的文本文件?还有,是Rbody。。。333 444 555 666结束一条线,你必须移除那条线吗?@squiguy:不,这不是一条线。Rbody是第一个,第十个结束。在一些数据之间。应该删除整个块,其余的数据应该分别放入我的数组中。