Eu tenho um arquivo de texto no qual algumas palavras são impressas em TODAS AS CAPS. Eu quero poder converter tudo no arquivo de texto para minúsculo, usando sed
. Isso significa que a primeira frase seria "eu tenho um arquivo de texto no qual algumas palavras são impressas em maiúsculas".
131
tr
comando? Às vezes é mais adequado do quesed
.Respostas:
Com
tr
:Funciona usando o GNU
sed
(o BSDsed
não suporta\L
\U
):fonte
sed -e 's/.*/\L&/' input.txt > output.txt
para o GNU sed obras bem tambémman sed
para saber qual versão você está usando.U
na frente de cada linhaSe você possui extensões GNU, pode usar \ sed's \ L (diminuir toda a correspondência ou até que \ L [lower] ou \ E [end - alternar com maiúsculas e minúsculas] seja atingido), assim:
Nota: '&' significa o padrão de correspondência completa.
Como uma observação lateral, as extensões GNU incluem \ U (superior), \ u (próximo caractere superior da correspondência), \ l (próximo caractere inferior da correspondência). Por exemplo, se você quisesse camelcase uma frase:
Nota: Como se supõe que temos extensões GNU, também podemos usar a opção dash-r (expressões regulares estendidas), que permite \ w (caractere de palavra) e alivia você de ter que escapar dos parênteses de captura e um ou mais quantificador (+). (Além:
\W [non-word], \s [whitespace], \S [non-whitespace]
também são compatíveis com o traço-R, mas\d [digit]
e\D [non-digit]
não são).fonte
sed -ri 's/MATCH_WHATEVER/\L&/i' input-file.ext
- o uso do/i
modificador torna a correspondência sem distinção entre maiúsculas e minúsculas e, portanto, é opcional. A-i
opção informa ao sed para alterar o arquivo no local. Não há necessidade de redirecionar a saída para outro arquivo, se você não precisar.\E [end - toggle casing off]
. Obrigado !Você também pode fazer isso com muita facilidade
awk
, se quiser considerar uma ferramenta diferente:fonte
tolower
não será capaz de lidar comÀ
, por exemplols | awk '{print "mv " $0 " " tolower($0)}' | sh
Aqui estão muitas soluções:
Para o upercaser com perl, tr, sed e awk
Para minúsculas com perl, tr, sed e awk
Partida complicada para minúscula:
Partida complicada para maiúscula:
Simples bash para minúsculas:
Simples bash para maiúsculas:
Observe que $ {v,} e $ {v ^} alteram apenas a primeira letra.
Você deve usá-lo dessa maneira:
fonte
Resultado:
fonte
Eu gosto de algumas das respostas aqui, mas há um comando sed que deve executar o truque em qualquer plataforma:
Enfim, é fácil de entender. E conhecer o comando y pode ser útil algumas vezes.
fonte
Se você estiver usando o posix sed
Seleção para qualquer caso de um padrão (convertendo o padrão pesquisado com este sed que use o padrão convertido no comando desejado usando regex:
converter em minúsculas
o mesmo para maiúsculas, substitua a letra minúscula entre // pelo equivalente superior no sed
Diverta-se
fonte
y//
alterar o conteúdo de origem ou poderia faltar o padrão de busca.curta, doce e você nem precisa de redirecionamento :-)
fonte