У меня есть данные, которые выглядят так:
8.620 -9.182 1.758 8.786 -8.249 -0.495 8.614 -9.652 -1.158 9.446 -9.278
0.350 11.450 -7.809 0.887 10.638 -9.000 2.070 11.179 -10.871 -1.200 7.583
-10.330 0.400 7.079 -9.330 -1.014 6.745 -11.702 0.004 11.610 -12.260 -1.101
12.381 -13.783 -
Я хочу сделать три строки столбцов, поэтому, когда они соответствуют третьему пространству, выведите новую строку. Есть ли какая-нибудь команда bash, которую я могу использовать, или как внутри сценария perl я могу ее изменить. Это не файл, я разбил строки по пробелам, взял элемент [6,7,8] и просто поместил эти элементы в массив. Когда я печатаю массив, он выглядит неорганизованным.
Это часть сценария:
if ($file_each[$line]=~/^ATOM/)
{
$file_each[$line]=~s/^ATOM//;
@os=split '\s+', $file_each[$line];
chomp @os[6,7,8];
push @coord, @os [6,7,8];
print "@coord\n";
}
Вот как должен выглядеть результат:
8.620 -9.182 1.758
8.786 -8.249 -0.495
8.614 -9.652 -1.158
Если строка $line
содержит ваши числа, попробуйте:
$line =~ s/(.*?\d +.*?\d .*?\d) +/$1\n/g;
Мы можем попробовать это из файла с
perl -pe 's/(.*?\d +.*?\d .*?\d) +/$1\n/g' ex