2012-04-09 43 views
6

Tôi muốn chuyển đổi chữ cái đầu tiên của mỗi dòng thành chữ thường ở cuối tệp. Làm thế nào tôi có thể làm điều này bằng cách sử dụng shell scripting?Chuyển đổi chữ cái đầu tiên của tệp đã cho thành chữ thường

Tôi cố gắng này:

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

nhưng điều này chuyển đổi chỉ là nhân vật đầu tiên chữ thường.

tập tin của tôi trông như thế này:

Apple 
Orange 
Grape 

Kết quả mong đợi:

apple 
orange 
grape 

Trả lời

6

Bạn có thể làm điều đó với sed:

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

(Có lẽ an toàn hơn để làm

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

nếu bạn đã bao giờ muốn mở rộng này)

+0

Cảm ơn phản hồi nhanh – Sijith

+0

Điều này chuyển đổi tất cả ký tự đầu tiên thành chữ thường nhưng không thay thế các chuỗi Caps cũ trong tệp. Có thể kiểm tra trên và thay thế cho phù hợp trong cùng một tập tin – Sijith

+0

Tôi không hiểu ý của bạn là gì. Câu hỏi của bạn cho biết: "chuyển đổi chữ cái đầu tiên của mỗi dòng thành chữ thường đến cuối tập tin" – Mat

2

Hãy thử:.

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

tinh khiết Bash 4.0 trở lên, thay thế tham số:

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

Đây là một lệnh sed duy nhất chỉ sử dụng Các tính năng của POSIX sed:

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

là hai dòng, dòng đầu tiên kết thúc bằng dấu gạch chéo ngược để trích dẫn ký tự dòng mới.

Các vấn đề liên quan