Você pode usar awk
:
$ awk -F',' '{sub(/[[:upper:]]+/,"",$2)}1' OFS=',' file
R1C1, 123abc, R1C3
R2C1, 456defg, R2C3
R3C1, 789hijkl, R3C3
Estou a ter um ficheiro CSV com mais de 3000 linhas no seguinte formato:
R1C1, ABC123abc, R1C3
R2C1, DEFG456defg, R2C3
R3C1, HIJKL789hijkl, R3C3
Eu preciso remover todas as letras maiúsculas da segunda coluna do arquivo para que ele leia o seguinte:
R1C1, 123abc, R1C3
R2C1, 456defg, R2C3
R3C1, 789hijkl, R3C3
Como isso pode ser feito?
se o segundo campo tiver maiúsculas espalhadas,
awk -F ',' '{gsub(/[[:upper:]]/, X, $2)}1' OFS=, file
Bash em combinação com sed
:
#!/bin/bash
cnt=0;
while IFS=, read a b c;
do
echo -n $a ; cnt=$[cnt+1];
sed -e 's/[^,]*,\([^,]*\).*//' file |
sed -e 's/\([[:upper:]]\)//g'|
sed -e $cnt'q;d'|
tr '\n' ' ' ;
echo $c;
done < file
produz:
R1C1 123abc R1C3
R2C1 456defg R2C3
R3C1 789hijkl R3C3
Tags text-processing csv