【发布时间】:2015-02-25 17:54:37
【问题描述】:
我想转换这种格式的文件
1;a;34;34;a
1;a;34;23;d
1;a;34;23;v
1;a;4;2;r
1;a;3;2;d
2;f;54;3;f
2;f;34;23;e
2;f;23;5;d
2;f;23;23;g
3;t;26;67;t
3;t;34;45;v
3;t;25;34;h
3;t;34;23;u
3;t;34;34;z
转成这种格式
1;a;34;34;a;34;23;d;34;23;v;4;2;r;3;2;d
2;f;54;3;f;34;23;e;23;5;d;23;23;g;;;
3;t;26;67;t;34;45;v;25;34;h;34;23;u;34;34;z
这些是 cvs 文件,所以它应该可以与 awk 或 sed 一起使用……但我到现在都失败了。如果第一个值相同,我想将最后三个值添加到第一行。这将一直运行到文件中的最后一个条目。
这里有一些 awk 中的代码,但它不起作用:
#!/usr/bin/awk -f
BEGIN{ FS = " *; *"}
{ ORS = "\;" }
{
x = $1
print $0
}
{ if (x == $1)
print $3, $4, $5
else
print "\n"
}
END{
print "\n"
}
【问题讨论】:
标签: linux command-line awk sed