Gawk: 개행 이전의 백스페이스가 작동하지 않습니다.

Gawk: 개행 이전의 백스페이스가 작동하지 않습니다.

저는 gawk(4.1.3)를 사용하고 있는데 작은 문제에 봉착한 것 같습니다. 백스페이스 문자 뒤에 개행 문자가 오면 작동하지 않는 것 같습니다.

awk 'BEGIN{for(i=1;i<=3;i++) printf("%d,",i); printf("\b\n")}'

주세요 1,2,3,(마지막 쉼표는 빠지지 않습니다)

\n새로운 함수에 넣어도 이 문제는 해결되지 않습니다 printf.

하지만 사이에 공백과 같은 \b문자를 삽입 하면 \n작동합니다.

다시 삭제 하면 \n작동됩니다.

문제는 무엇입니까?

답변1

\b커서만 이동되며 텍스트는 덮어쓰이지 않습니다.

에서 쉼표로 구분된 목록을 작성하려면 awk올바른 레코드를 생성하고 인쇄하는 것이 한 가지 옵션입니다.

BEGIN {
    OFS = ","
    $0 = ""

    for (i = 1; i <= 3; ++i)
      $i = i

    print
}

출력은 다음과 같습니다 1,2,3.

솔로 군중의 경우:

awk -vOFS=',' 'BEGIN { for (i = 1; i <= 3; ++i) $i = i; print }'

$0빈 문자열로 설정하면 그렇지 않습니다.진짜여기서는 블록이 하나만 있고 BEGIN입력 데이터가 없기 때문에 필요하므로 단일 행 변형에서는 생략했습니다.

관련 정보