Как вставить пустую строку между разными значениями одного столбца - PullRequest
1 голос
/ 07 апреля 2019

У меня есть 3 файла B1.dat, B2.dat и B3.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 Ответ

4 голосов
/ 07 апреля 2019
awk 'p!=$1{p=$1;if(NR>1) print ""}1' file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...