Você também pode usar o editor sed
para executar essa tarefa:
cmds=$(< line_index_file xargs -l printf '\t%sba\n')
sed -e "
${cmds}
;# skip these
b
:a
s/,/\n/5;s//\n/5;s//\n/5
s/\n\(.*\)\n.*\n/,,,/
" input.csv
Explicação:
- Primeiro, crie uma variável de shell,
cmds
, mantendo a ramificação no rótulo:a
information para as linhas mencionadas noline_index_file
. - Ignore o processamento das outras linhas, ou seja, aquelas linhas que não são mencionadas no arquivo line_index_.
- Coloque um marcador
\n
(uma vez que uma nova linha não será encontrada no espaço padrão desed
no nosso caso) no final do 5º, 6º e 7º campos. - Em seguida, execute a operação para colocar o conteúdo do sexto campo no sétimo.