n개 이상의 문자가 포함된 연속된 두 줄을 검색하고 싶습니다.

n개 이상의 문자가 포함된 연속된 두 줄을 검색하고 싶습니다.

nsed를 사용하여 연속된 줄에 최소한 공백이 아닌 문자가 포함된 텍스트 파일의 첫 번째 부분을 검색하고 싶습니다 . 이 줄의 첫 번째 줄부터 파일 끝까지 인쇄하고 싶습니다.

이 질문을 표현하는 가장 좋은 방법은 무엇입니까?

답변1

sed를 사용하면 다음과 같이 작동합니다.

n=5
sed -ne "/\([^[:blank:]].*\)\{$n\}/!d;h;n;//!d;x;p;x;:1" -e 'p;n;b1'

답변2

awk -v n=$n ' 
    !p {line = $0; gsub(/[[:space:]]/, "")}  
    !p && length($0) >= n && prev_is_long {p = 1; print prev}  
    !p {prev = line; prev_is_long = (length($0) >= n)}  
    p {print} 
' file1 

답변3

나는 당신이 sed에 대해 이야기하고 있다는 것을 알고 있습니다(말장난 의도 없음). 그러나 PERL에 액세스할 수 있는 경우 다음 코드는 원하는 작업을 수행해야 합니다(n=20):

#!/usr/bin/perl -w
my $n=20;    ## The minimum length of the line
my $prev=""; ## This holds the number of chars in the previous line
my $pline;   ## This holds the previous line
my $pp=0;    ## Counter, lines will be printed if set to 1
while(<>){
    ## Skip line processing if we have already 
    ## found our lines of interest
    $pp==1 && do {print; next};
    ## Get non-space chars
    my $a=join("",/[^\s]+/g);
    ## Print if requirements are met.
    if (length($prev)> $n && length($a)> $n){
    print $pline,$_;
    $pp=1;
    }
    $prev=$a;
    $pline=$_;
}

foo.pl로 저장하고 다음과 같이 실행하세요.

$ perl foo.pl infile.txt

관련 정보