里面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
会将光标向上移动一行。