Odd*_*ish 8 bash excel perl awk sed
我有一个非常大的制表符分隔文件(大约1200万行),如下所示:
F1 1
2
700
F2 89
900
10000
19
F3 100
60001
Run Code Online (Sandbox Code Playgroud)
有什么办法可以让我这样做:
F1 1
F1 2
F1 700
F2 89
F2 900
F2 10000
F2 19
F3 100
F3 60001
Run Code Online (Sandbox Code Playgroud)
我尝试过使用sed脚本,但需要很长时间.
例如
sed 's/^/F1/' FILE | cut -c3- > FILE1 ; mv FILE1 FILE
Run Code Online (Sandbox Code Playgroud)
我可以在excel中使用它
=IF(a2=="",c1,a2)
Run Code Online (Sandbox Code Playgroud)
并拖下来.但Excel只允许我加载一定数量的行.
(假设我已将"F1"复制到C1)
当然,使用awk或sed有一种更简单的方法吗?
perl -F'\t' -lane'$h = $F[0] ||= $h; print join "\t", @F'
Run Code Online (Sandbox Code Playgroud)
作业是右关联的,所以
$h = $F[0] ||= $h;
Run Code Online (Sandbox Code Playgroud)
相当于
$h = ( $F[0] ||= $h );
Run Code Online (Sandbox Code Playgroud)
因此
$F[0] ||= $h;
$h = $F[0];
Run Code Online (Sandbox Code Playgroud)
和
$F[0] = $h if !$F[0];
$h = $F[0];
Run Code Online (Sandbox Code Playgroud)