有上行字符吗? (与\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
    }
}

如果你真的想提升一个角色,请查看tputterminfo转义序列

tput cuu1

会将光标向上移动一行。

相关内容