Isso pode ser feito com a opção Uppercase do GNU sed. No local com a opção -i
:
sed -i '1s/.*/\U&/' Dataset1.csv
Eu tenho um conjunto de arquivos csv e, para cada arquivo, a primeira linha contém nomes de campo para um conjunto de dados. Alguns arquivos csv possuem letras maiúsculas para os nomes dos campos, outros possuem letras minúsculas para os nomes dos campos. Minha pergunta é como eu altero cada arquivo csv para que a primeira linha de cada arquivo (também conhecida como nomes de campo) seja exibida como todas as strings em maiúsculas em cada coluna?
Exemplos: Dataset1.csv
a b c
x x x
Dataset2.csv
A B C
y y y
Como faço para o Dataset1.csv se parecer com o seguinte?
A B C
x x x
Isso pode ser feito com a opção Uppercase do GNU sed. No local com a opção -i
:
sed -i '1s/.*/\U&/' Dataset1.csv
Podemos fazer usando o awk e o GNU sed
Método1
awk 'NR==1{(i=toupper($0));print i}' Dataset1.csv ; awk 'NR >=2 {print $0}' Dataset1.csv
Saída
A B C
x x x
z z z
Método 2
sed '1s/.*/\U&/g' Dataset1.csv
Saída
A B C
x x x
z z z
Este é um repost do stackoverflow desde que alguém me disse que a minha pergunta era off-topic para o site e recebi as seguintes respostas:
Considerando que seu arquivo termina com uma nova linha:
head -1 Dataset1.csv | tr '[:lower:]' '[:upper:]' > Dataset1_new.csv ; tail -$(( $(wc -l Dataset1.csv | cut -d ' ' -f 8) - 1 )) Dataset1.csv > Dataset1_new.csv
head -1 Dataset1.csv | tr '[:lower:]' '[:upper:]'
: pega a primeira linha do seu arquivo e o transforma em maiúsculas & envia para o stdout
> Dataset1_new.csv
: redireciona a saída para um novo arquivo chamado Dataset1_new.csv
tail -$(( $(wc -l Dataset1.csv | cut -d ' ' -f 8) - 1 ))
Dataset1.csv: gera o resto das linhas
> Dataset1_new.csv:
novamente, redireciona a saída para nosso arquivo Dataset1_new.csv
Você pode fazer isso com o GNU sed:
$ sed -i -e '1 s/\(.*\)/\U/' input.csv
Você também pode usar o awk para essa finalidade:
awk -i.bak 'NR==1{ print toupper($0) }NR>1' Dataset1.csv
Explicações:
o awk irá fazer um backup do seu arquivo csv e então para a primeira linha (NR == 1) irá mudar toda a linha $ 0 para maiúscula e então para o resto do arquivo (NR > 1) fará sua ação padrão está imprimindo a linha.