Capitaliza a primeira letra após a primeira vírgula em cada linha da interface de linha de comando do linux

2

Dado um arquivo com linhas semelhantes às seguintes.

Mike,mackenna,mike.mackenna,[email protected],yes,no,000
Joe,smith,joe.smith,[email protected],yes,no,123

Eu gostaria de alterar o arquivo para que as linhas sejam mostradas da seguinte forma

Mike,Mackenna,mike.mackenna,[email protected],yes,no,000
Joe,Smith,joe.smith,[email protected],yes,no,123

Idealmente, eu gostaria de fazer a mudança no vim usando a substituição e a regex, mas também estou aberto a outras possíveis soluções.

    
por mpmackenna 24.08.2017 / 17:00

1 resposta

3

Este é um comando vim muito direto:

:%s/,./\U&

O \U significa converter o seguinte em maiúsculas , e o & significa todo o texto correspondente (o mesmo que /g )

Como não fornecemos o sinalizador f,lvU , isso será executado somente na primeira correspondência. Você também pode fazer um comando normal:

:%norm f,lvU

É como digitar f, em cada linha manualmente: l encontre uma vírgula, vU mova para a direita, %code% converta para maiúscula.

Para fazer isso como um comando bash:

vim file.txt -c "%s/,./\U&" -c "wq"

ou

vim file.txt -c "%norm f,lvU" -c "wq"
    
por 24.08.2017 / 17:07