Como substituir o delimitador da coluna específica

0

Este é o arquivo abc.txt que consiste em 5 colunas:

ID|first name|middle name|last name|address 
1 | john     | whatever  | smith   | somewhere

Como obtenho esta saída:

ID|first name middle name last name|address
1 | john whatever smith            |somewhere

Como substituo o '|' por espaço apenas em colunas específicas para um novo arquivo def.txt . Neste caso, 2ª coluna até a 4ª coluna.

    
por user6308605 10.08.2017 / 09:48

2 respostas

2

Solução

awk :

awk 'BEGIN{ FS=OFS="|" }{ cs=$2$3$4; gsub(/ +/, " ", cs); print $1,sprintf("%-32s",cs),$5 }' abc.txt
  • FS=OFS="|" - separador de campos

  • cs=$2$3$4 - campo 2, 3 e 4 concatenado

  • gsub(/ +/, " ", cs) - removendo espaços redundantes

  • sprintf("%32s",cs) - string concatenada formatada

A saída:

ID|first namemiddle namelast name  |address 
1 | john whatever smith            | somewhere
    
por 10.08.2017 / 09:56
0

Usando sed :

sed -e 's,|\([^|]*\)|\([^|]*\)|,|  ,' abc.txt > def.txt

Aqui é uma boa introdução que abrange os recursos s usados.

    
por 10.08.2017 / 09:51