내 파일은 다음과 같습니다Perl에서 행을 일치시킨 후 여러 행을 가져 오는 방법은 무엇입니까?
1 15
2 16
3 18
4 19
5 25
6 30
7 55
8 45
9 34
10 52
일치하는 패턴이 라인 6 (30)의 경우, 내가 예를 들어, 6 행 후 전 N 라인과 M 라인을 잡아하고자하는 경우 N = 3, M = 4 결과는 다음과 같을 것으로 예상됩니다 :
3 18
4 19
5 25
6 30
7 55
8 45
9 34
10 52
저는 Perl에서 매우 새로운 초보자입니다.
# UPDATE 아래의 유용한 조언을 주셔서 감사 드리며 정말로 감사드립니다. 여기에 대한 내 업데이트 된 코드 및 모든 제안을 환영합니다!
my $num;
while(<>)
{
if (/pattern/)
{$num = $. ;}
}
open (,"") || die ("Can't open the file");
while(<>)
{
if ( $. >= $num-N and $. <=$num+M)
{
print OUT "$_ \r";
}
}
서로 4 줄로 두 개의 일치 항목을 찾을 수 있습니까? 그렇다면 무엇을? – ikegami
학습 과제로이 작업을 수행하지 않는 한 ack 또는 grep : 'ack'30 '- before-context 3 --after-context 4 DATA_FILE을 고려할 수 있습니다. – FMc
@FMc 감사와 grep에 대한 귀하의 조언에 많은 감사 드리며 정말로 감사드립니다. 이것은 perl에서 학습 한 유일한 연습입니다. – Sam