Supondo que você gostaria de mesclar as linhas é de tal forma que cada nova linha contenha três das linhas do arquivo de entrada e que você deseja manter o mesmo cabeçalho:
$ ( head -n 1 file; sed '1d' file | paste -d 'ID Name NUMBER
1ABC234)234-2345,
2CBF23588900,
3knl334235354,
4gkmnk436563654,
line5,
line6,
line7,
line8,
line9,
' - - - ) >newfile
$ cat newfile
ID Name NUMBER
1ABC234)234-2345,2CBF23588900,3knl334235354,
4gkmnk436563654,line5,line6,
line7,line8,line9,
O arquivo de entrada que usei era
$ ( head -n 1 file; sed '1d' file | paste -d '$ ( head -n 1 file; sed '1d' file | paste -d 'ID Name NUMBER
1ABC234)234-2345,
2CBF23588900,
3knl334235354,
4gkmnk436563654,
line5,
line6,
line7,
line8,
line9,
' - - - ) >newfile
$ cat newfile
ID Name NUMBER
1ABC234)234-2345,2CBF23588900,3knl334235354,
4gkmnk436563654,line5,line6,
line7,line8,line9,
' - - - | awk '{ print "LINE--" NR, $0 }') >newfile
$ cat newfile
ID Name NUMBER
LINE--1 1ABC234)234-2345,2CBF23588900,3knl334235354,
LINE--2 4gkmnk436563654,line5,line6,
LINE--3 line7,line8,
O comando head
simplesmente exibe o cabeçalho do arquivo, enquanto o sed
e paste
pipeline distribui as linhas restantes em grupos de três sem inserir nenhum delimitador. A saída de head
e do pipeline é redirecionada para um novo arquivo.
Se você precisar do cabeçalho específico mencionado, basta substituir o comando head
completo por echo 'insert header text here'
.
Se você precisar de LINE--1
etc. para cada linha, passe o resultado de paste
a awk '{ print "LINE--" NR, $0 }'
:
$ ( head -n 1 file; sed '1d' file | paste -d '%pre%' - - - | awk '{ print "LINE--" NR, $0 }') >newfile
$ cat newfile
ID Name NUMBER
LINE--1 1ABC234)234-2345,2CBF23588900,3knl334235354,
LINE--2 4gkmnk436563654,line5,line6,
LINE--3 line7,line8,