그래서 다음 파일이 있습니다.
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
.