Если sed
является вариантом, вы можете сделать:
sed -E ':a s/^([^ ]* )(.*),([^,]*$)/\1\2\n\1\3/; ta' infile
с учетом ввода ниже:
B 2,3,5,6
C 6,7
D 1,3,5,8
([^ ]* )
захват первого столбца (при условии, что пробел является разделителем ); он захватитB
(B , за которым следует пробел). (.*),
фиксирует все до последней запятой; захватит2,3,5
Это ([^,]*$)
захватывает оставшуюся часть строки (т.е. :последнее поле после последней запятой каждый раз ); захватит6
поэтому \1\2\n\1\3
будет выглядеть так, как показано ниже, при первом цикле -для первой строки:
sed -E ':a s/^([^ ]* )(.*),([^,]*$)/\1\2\n\1\3/;q ;ta' infile
B 2,3,5
B 6
следующий цикл -приведет к следующему результату:
B 2,3
B 5
B 6
наконец, в последнем цикле -запуск первой строки будет выводиться, как показано ниже:
sed -E ':a s/^([^ ]* )(.*),([^,]*$)/\1\2\n\1\3/ ;ta ;q' infile
B 2
B 3
B 5
B 6
Теперь прочитайте следующую строку и выполните тот же процесс, пока все строки не продолжатся и не закончатся.
Возможно, вы запускали несколько rsync параллельно. Если это так, то я думаю, что может произойти то, что параллельный rsync (или какой-либо другой процесс) удаляет временные файлы вашего rsync.