Trabalhando a partir do primeiro conjunto de entrada e saída esperadas na pergunta e supondo que você deseja trocar o mês e o dia na data no terceiro campo |
-delimited.
$ awk -F '|' -v OFS='|' 'NR > 1 { split($3, a, "/"); $3 = sprintf("%s/%s/%s", a[2],a[1],a[3]) } 1' <file
S.no|Name|Joining_Date|Address
1|asdasd|18/09/2018|asdas
2|asd|18/09/2018|asdasd
3|asdas|18/09/2018|aadadw
Este comando awk
trata cada linha de entrada como um registro com campos |
-delimited. Ele pega o terceiro campo em cada linha (exceto a primeira linha) e o divide em /
na matriz a
. Em seguida, ele remonta o campo usando a matriz a
no formato desejado e a ordem usando sprintf()
(que funciona como printf()
, mas retorna a sequência gerada em vez de gerá-la). O único 1
no final faz com que cada linha seja produzida (é uma maneira breve de escrever { print }
).