如何在一列的不同值之间插入空白行

时间:2019-04-07 19:09:15

标签: shell awk

我有3个文件B1.datB2.datB3.dat,这些文件的行和列编号是数字,我已经将其转换为三列的文件(一个用于B dat文件),如下:

(tr -s "[:space:]" "\n" < B1.dat) > B1c.dat
(tr -s "[:space:]" "\n" < B2.dat) > B2c.dat
(tr -s "[:space:]" "\n" < B3.dat) > B3c.dat
paste B1c.dat B2c.dat B3c.dat > dfsa3c.dat

dfsa3c.dat的内容是这样的

0.72    0.5 0.
0.72    1.5 0.
0.72    2.5 0.5045
0.72    3.5 1.
0.72    4.5 1.
0.72    5.5 1.
0.72    6.5 1.
0.72    7.5 1.
0.72    8.5 1.
0.72    9.5 1.
0.72    10.5    1.
0.72    11.5    1.
0.72    12.5    1.
0.76    0.5 0.
0.76    1.5 0.0005
0.76    2.5 0.6215
0.76    3.5 1.
0.76    4.5 1.
0.76    5.5 1.
0.76    6.5 1.
0.76    7.5 1.
0.76    8.5 1.
0.76    9.5 1.
0.76    10.5    1.
0.76    11.5    1.
0.76    12.5    1.
0.8 0.5 0.
0.8 1.5 0.00175
0.8 2.5 0.7495
0.8 3.5 1.
0.8 4.5 1.
0.8 5.5 1.
0.8 6.5 1.
0.8 7.5 1.
0.8 8.5 1.
0.8 9.5 1.
0.8 10.5    1.
0.8 11.5    1.
0.8 12.5    1.
0.84    0.5 0.
0.84    1.5 0.004
0.84    2.5 0.873
0.84    3.5 1.
0.84    4.5 1.
0.84    5.5 1.
0.84    6.5 1.
0.84    7.5 1.
0.84    8.5 1.
0.84    9.5 1.
0.84    10.5    1.
0.84    11.5    1.
0.84    12.5    1.

我想创建此文件数据,但是在第一列的值更改时插入空白行,如下所示:

0.72    0.5 0.
0.72    1.5 0.
0.72    2.5 0.5045
0.72    3.5 1.
0.72    4.5 1.
0.72    5.5 1.
0.72    6.5 1.
0.72    7.5 1.
0.72    8.5 1.
0.72    9.5 1.
0.72    10.5    1.
0.72    11.5    1.
0.72    12.5    1.

0.76    0.5 0.
0.76    1.5 0.0005
0.76    2.5 0.6215
0.76    3.5 1.
0.76    4.5 1.
0.76    5.5 1.
0.76    6.5 1.
0.76    7.5 1.
0.76    8.5 1.
0.76    9.5 1.
0.76    10.5    1.
0.76    11.5    1.
0.76    12.5    1.

0.8 0.5 0.
0.8 1.5 0.00175
0.8 2.5 0.7495
0.8 3.5 1.
0.8 4.5 1.
0.8 5.5 1.
0.8 6.5 1.
0.8 7.5 1.
0.8 8.5 1.
0.8 9.5 1.
0.8 10.5    1.
0.8 11.5    1.
0.8 12.5    1.

0.84    0.5 0.
0.84    1.5 0.004
0.84    2.5 0.873
0.84    3.5 1.
0.84    4.5 1.
0.84    5.5 1.
0.84    6.5 1.
0.84    7.5 1.
0.84    8.5 1.
0.84    9.5 1.
0.84    10.5    1.
0.84    11.5    1.
0.84    12.5    1.

原始数据文件具有更多值,因此脚本应检测何时插入空白行。

1 个答案:

答案 0 :(得分:4)

awk 'p!=$1{p=$1;if(NR>1) print ""}1' file