Для установки grub Customizer выполните следующую команду:
apt-get install build-essential cmake libgtkmm-3.0-dev libssl-dev gettext libarchive-dev
wget https://goo.gl/qQnUhK -O grub-customizer_4.0.6.tar.gz
tar xfv grub-customi*
cd grub-customi*
cmake . && make -j3
make install
Al menos con GNU sed
y suponiendo que sus campos no pueden contener separadores de coma incrustados , podría hacer
sed 's/,/\n/6; P; D' roll.txt
que intenta repetidamente reemplazar la sexta coma con una nueva línea, imprimir y luego eliminar la parte del espacio del patrón hasta la nueva línea.
NOTA :no es necesario implementar una prueba/bifurcación etiquetada explícitamente, ya que el comando D
implícitamente "reinicia el ciclo" en el resto de la línea:
D
If pattern space contains no newline, start a normal new cycle as if the d command was issued. Otherwise, delete text in the pattern space up to the first newline, and restart cycle with the resultant pattern space, without reading a new line of input.
(crédito a @RakeshSharma por aclarar esto ).
Ej.
sed 's/,/\n/6; P; D' roll.txt
'123456789','987651234','129873645','213456789','987612345','543216789'
'432156789','876543291','213465789','542637819','123456','23456'
'22234','3456','7890543','34567891,'2345','567'
Alternativamente, con el módulo Text::CSV
de Perl:
perl -MText::CSV -ne '
BEGIN{$p = Text::CSV->new()}
@fields = $p->fields() if $p->parse($_);
do {
print join ",", splice @fields, 0, 6; print "\n";
} while @fields
' roll.txt
'123456789','987651234','129873645','213456789','987612345','543216789'
'432156789','876543291','213465789','542637819','123456','23456'
'22234','3456','7890543','34567891,'2345','567'
Con tr
ypaste
:
tr ',' '\n' <infile |paste -sd',,,,,\n'
para una mayor legibilidad y comprensión:
tr ',' '\n' <infile |paste --serial --delimiters=',,,,,\n'
En tal caso, cuando desea agregar una nueva línea en cada posición,N = 100 , es posible que no prefiera ingresar 99 comas ',,,,,,,,,,...,\n'
; en su lugar, deje que printf
lo genere por usted con la expansión de llaves -.
tr ',' '\n' <infile |paste -sd $(printf '%.1s',{1..99})'\n'
deman paste
:
-d, --delimiters=LIST reuse characters from LIST instead of TABs -s, --serial paste one file at a time instead of in parallel
Una variación de la respuesta de αғsнιη:
$ tr ',' '\n' <file | paste -d, - - - - - -
'123456789','987651234','129873645','213456789','987612345','543216789'
'432156789','876543291','213465789','542637819','123456','23456'
'22234','3456','7890543','34567891,'2345','567'
Esto supone que ninguno de los campos tiene comas incrustadas.
Si la entrada no tiene un múltiplo de seis campos, puede obtener una salida como
'123456789','987651234','129873645','213456789','987612345','543216789'
'432156789','876543291','213465789','542637819','123456','23456'
'22234','3456','7890543','34567891,'2345','567'
hello,world,,,,