【发布时间】:2016-11-22 14:12:12
【问题描述】:
我举例说明我需要做什么:
输入:
name value1 value2 value3
john xxxxx yyyyy qqqqqq
john xxxxx ddddd vvvvvv
john mmmmm jjjjj llllll
paul xxxxx yyyyy qqqqqq
paul ccccc ccccc dddddd
我需要保留标题并根据第一列中的 same 名称拆分为文件。 我需要根据第一列继续命名我的输出文件。
输出:
FILE1:john.tsv
name value1 value2 value3
john xxxxx yyyyy qqqqqq
john xxxxx ddddd vvvvvv
john mmmmm jjjjj llllll
FILE2:paul.tsv
name value1 value2 value3
paul xxxxx yyyyy qqqqqq
paul ccccc ccccc dddddd
INPUT 和 OUTPUT 文件是制表符分开的。标题始终相同。
我的解决方案很复杂很慢:
head -1 INPUT > header
awk 'NR>1{print $1}' | sort | uniq > names
while read line
do grep $line INPUT | cat header - > $line.tsv
< names
done
【问题讨论】:
-
它们是否已排序?例如:所有
john条目总是彼此相邻? -
是的,总是按名称排序。
-
最好编辑带有排序要求的问题,并更改样本输入和预期输出以反映排序