텍스트 파일의 줄 재구성

텍스트 파일의 줄 재구성

그래서 다음 파일이 있습니다.

First Line
Second Line 
Third Line
3 0.374
2 0.777
1 0.245
Fourth Line
4 0.687
...

int로 시작하는 줄이 int로 참조되는 줄에 추가되도록 재구성하고 싶습니다.

First Line 0.245
Second Line 0.777
Third Line 0.374
Fourth Line 0.687
...

답변1

POSIX 사용 awk:

awk '$1 in a {print a[$1], $0; next}; {a[++l] = $0}' <file

참조선 앞에 int 행이 나타나면 출력이 정렬되지 않고 손실된다는 점에 유의하세요.

그리고 gawk또는bwk-awk, 정렬된 출력을 쉽게 인쇄할 수 있습니다.

gawk '
  $1 in a { a[$1] = a[$1] " " $0; next }
  { a[++l] = $0 }
  END { for (i = 1; i <= length(a); i++) print a[i] }
' <file

다른 awk구현의 경우 배열 인덱스를 정렬하는 함수를 직접 작성해야 합니다.

이는 또한 전체 파일 내용을 메모리에 유지합니다.

답변2

아래 솔루션은 정렬 도구를 사용하지 않고도 정렬된 출력을 제공합니다.

$1 ~ "[0-9]" {
    line[$1] = $2;
    next;
}
{
    aux[++k] = $0;
}
END {
    for(i = 1; i <= k; i++)
        print aux[i], line[i];
}

산출:

First Line 0.245
Second Line  0.777
Third Line 0.374
Fourth Line 0.687

깔끔한 형식의 인쇄를 원하면 를 사용하세요 printf.

관련 정보