Use awk para isso:
awk -F\| '{gsub(" ","\&",$3); gsub(" ","\&",$5)}1' OFS=\| infile.txt
-
O
-F\|, informando 'awk' que os campos são delimitados por|pipe (ele escapou de\para shell, não o interprete comopipeline stdin, poderíamos usar-F"|"ou-F'|'). -
A sintaxe
gsub("regexp","replacement"[, INDEX])usada para substituir" "(espaço ) com literal&no índice (coluna)$3e$5, abaixo está mostrando cada posição do Índice com base no|delimiter.a a|b b|c c|d d|e e ^^^|^^^|^^^|^^^|^^^ $1 |$2 |$3 |$4 |$5Leia mais sobre por que escapamos de
\&e duas vezes ?! -
Qual é o
1usado no final emawk '{...}1'? é o controle de ação padrão do awk para imprimir. leia mais em detalhes -
O
OFS=\|retorna novamente ou imprime os campos com o delimitador|especificado.