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)$3
e$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 |$5
Leia mais sobre por que escapamos de
\&
e duas vezes ?! -
Qual é o
1
usado 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.