모든 문자가 순서대로 포함된 텍스트 파일에서 줄만 추출하는 명령을 찾으려고 합니다.
800900100011001200.. (아래로 100) 369121518 (위로 3)
위 명령이 포함된 행만 인쇄하기 위해 하나의 명령으로 이 작업을 수행할 수 있습니까? 아니면 각 시퀀스에 대해 명령을 만들어야 합니까?
답변1
perl
한 가지 방법은 실험적인 정규식 연산자를 사용하여 (??{...})
선형 시퀀스에서 3개 이상의 소수 자릿수 시퀀스를 처리하는 것입니다.
perl -lne 'print if m{^(\d+)(\d+)(?=(.+$))(??{
my $i = $2; my $r; my $l = length $3; my $incr = $2 - $1;
while (length($r) < $l) {$i += $incr; $r .= $i}; $r})$}'
000000
0000, 0, 0 또는 0, 0, 0, 0, 0, 0을 보고 하고 1023
1, 02, 3도 보고하지만 작동 방식은 아닙니다 1203
. 이전 2자리 뒤에는 목록이 필요합니다. 앞에 0이 없는 숫자.
다시 말하지만, 보고되지만 10-1
처음 두 숫자에서 예상한 것과는 다릅니다 -101
.-
다음을 통해 이 문제를 해결할 수 있습니다.
perl -lne 'print if m{^(-?\d+)(-?\d+)(?=(.+$))(??{
my $i = $2; my $r, $sign, $value; my $m = $3; my $incr = $2 - $1;
while (($i += $incr),
(($sign, $value) = ($i =~ /(-?)(\d*)/)),
$m =~ /^(${sign}0*$value)(.*)/) {
$r .= $1; $m = $2;
}; $r})$}'
12000034
, -101
, -1-2-3
, 0-123-246
... 을 보고합니다.