【发布时间】:2014-10-15 16:50:24
【问题描述】:
我正在尝试连接字符串值并打印它们,但如果最后一个类型是字符串并且类型没有变化,那么连接将不会打印:
输入.txt:
String 1
String 2
Number 5
Number 2
String 3
String 3
awk:
awk '
BEGIN { tot=0; ant_t=""; }
{
t = $1; val=$2;
#if string, concatenate its value
if (t == "String") {
tot+=val;
nx=1;
} else {
nx=0;
}
#if type change, add tot to res
if (t != "String" && ant_t == "String") {
res=res tot;
tot=0;
}
ant_t=t;
#if string, go next
if (nx == 1) {
next;
}
res=res"\n"val;
}
END { print res; }' input.txt
当前输出:
3
5
2
预期输出:
3
5
2
6
如何检测 awk 是否正在读取最后一行,所以如果不会更改类型,它将检查它是否是最后一行?
【问题讨论】:
标签: awk concatenation