오름차순 문자가 있나요? (\n의 반대)

오름차순 문자가 있나요? (\n의 반대)

거기에 라이징 캐릭터가 있나요 awk? 나는 다음과 같은 것을 발견했습니다.여기하지만 작동하지 않습니다.

다음의 경우:

97
ARE
3
NL
1303
1
140
USA

기록이 숫자가 아닌 경우 다음과 같이 인쇄해야 합니다.

97,ARE
3,NL
1303
1
140,USA

답변1

커서를 이동하려고 시도하는 것보다 프로그래밍 방식으로 이 문제를 처리하는 것이 더 낫다고 생각합니다.

awk '/^[[:digit:]]+$/ { if (length(prev) > 0) { print prev }; prev = $0 } !/^[[:digit:]]+$/ { print (length(prev) > 0 ? prev : "") "," $0; prev = ""} END { if (length(prev) > 0) { print prev } }'

원하는 출력이 생성됩니다. 이전 줄을 기억하고 prev다음 줄에 숫자 내용이 있는지 여부에 따라 단독으로 인쇄하거나 쉼표와 현재 줄을 함께 인쇄합니다.

다음은 이해하기 쉽도록 형식화된 Awk 부분입니다.

/^[[:digit:]]+$/ {
    if (length(prev) > 0) {
        print prev
    }
    prev = $0
}
!/^[[:digit:]]+$/ {
    print (length(prev) > 0 ? prev : "") "," $0
    prev = ""
}
END {
    if (length(prev) > 0) {
        print prev
    }
}

정말로 캐릭터 레벨을 올리고 싶다면 확인해 보세요.tput그리고terminfo이스케이프 시퀀스:

tput cuu1

커서를 한 줄 위로 이동합니다.

관련 정보