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块并且没有输入数据,所以我将其从单行变体中省略了。

相关内容