2012-04-09 10 views
6

Quiero convertir la primera letra de cada línea en minúscula hasta el final del archivo. ¿Cómo puedo hacer esto usando scripts de shell?Convertir la primera letra del archivo dado en la minúscula

yo probamos este:

plat=`echo $plat |cut -c1 |tr [:upper:] [:lower:]``echo $plat |cut -c2-` 

pero esto convierte sólo el primer carácter a minúsculas.

Mi archivo tiene el siguiente aspecto:

Apple 
Orange 
Grape 

Resultado esperado:

apple 
orange 
grape 

Respuesta

6

Usted puede hacer eso con sed:

sed -e 's/./\L&/' Shell.txt 

(probablemente más seguro que hacer

sed -e 's/^./\L&\E/' Shell.txt 

si alguna vez quiere extender este)

+0

Gracias por la respuesta rápida – Sijith

+0

Esto convierte el primer carácter en minúsculas pero no reemplaza las antiguas cadenas Caps en el archivo. ¿Es posible verificar la superior y reemplazar en consecuencia en el mismo archivo? – Sijith

+0

No entiendo lo que quiere decir. Esto hace lo que dice su pregunta: "convertir la primera letra de cada línea a minúscula hasta el final del archivo" – Mat

2

Probar:.

plat=`echo $plat |cut -c1 |tr '[:upper:]' '[:lower:]'``echo $plat |cut -c2-` 
2

Bash Pure 4.0+, parámetro de sustitución:

>"$outfile"       # empty output file 
while read ; do 
    echo "${REPLY,}" >> "$outfile" # 1. character to lowercase 
done < "$infile" 
mv "$outfile" "$infile" 
0

Aquí es un solo comando sed que utiliza sólo POSIX sed características:

sed -e 'h;s,^\(.\).*$,\1,;y,ABCDEFGHIJKLMNOPQRSTUVWXYZ,abcdefghijklmnopqrstuvwxyz,;G;s,\ 
.,,' 

These son dos líneas, la primera línea termina en una barra invertida para citar el carácter de nueva línea.

Cuestiones relacionadas