【发布时间】:2017-04-20 08:06:16
【问题描述】:
我有一个非常大的制表符分隔文件(大约 1200 万行),如下所示:
F1 1
2
700
F2 89
900
10000
19
F3 100
60001
有什么办法可以让我这样:
F1 1
F1 2
F1 700
F2 89
F2 900
F2 10000
F2 19
F3 100
F3 60001
我尝试过使用 sed 脚本,但需要很长时间。
例如
sed 's/^/F1/' FILE | cut -c3- > FILE1 ; mv FILE1 FILE
我可以在excel中使用
=IF(a2=="",c1,a2)
并向下拖动。但是 Excel 只允许我加载一定数量的行。
(假设我已将“F1”复制到 C1)
用 awk 或 sed 肯定有更简单的方法吗?
【问题讨论】:
-
第二行的数字
2是否带有一个或两个制表符前缀? -
如果 sed 需要很长时间,那么 awk 也可能需要很长时间......我可以提供一个 Python 解决方案,但它也会很慢。在这种情况下,问题是磁盘 I/O。
-
第 1 列中没有值的行有两个制表符
-
1200 万行并不是一个“非常大的文件”。
-
@EdMorton 及时指出。而这一次它避免我发布
awk解决方案(你必须在之后更正但仍然...... :))。谢谢。