Estou manipulando dados de um arquivo de texto com a seguinte estrutura de dados:
"1111","2222","3333","4444","5555","6666","7777","2017/12/15 16:26:00"
Estou tentando mudar o '/' na data para '-'. Aqui está o meu comando awk:
awk -F "," '{gsub("/", "-", $8); print}' my-input.txt
Ele altera com sucesso o /, mas tem a consequência não intencional de substituir as vírgulas ',' por um caractere de espaço ' ':
"1111" "2222" "3333" "4444" "5555" "6666" "7777" "2017-12-15 16:26:00"
Alguém sabe por que isso está acontecendo?
Conforme apontado por taliezin e pfnuesel, ao definir o separador de arquivo de entrada como ',' é necessário definir também o separador de arquivo de saída como ',' para mantê-lo. Se o separador de arquivo de saída for omitido e uma modificação em um campo existente tiver sido feita, o awk usará o valor padrão, neste caso um caractere ' ' [espaço].
Abaixo está o comando awk corrigido:
Que gera o resultado pretendido que mantém o ',':
Como o requisito é "mudar o '/' na data para '-'", que é uma simples substituição de caractere, por que não usar sed? sed 's///-/g' minha-entrada.txt