2012-04-09 100 views
6

我想將每行的第一個字母轉換爲小寫,直到文件結尾。我如何使用shell腳本執行此操作?將給定文件的第一個字母轉換爲小寫

我嘗試這樣做:

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

但這只是第一個字符轉換爲小寫。

我的文件是這樣的:

Apple 
Orange 
Grape 

預期結果:

apple 
orange 
grape 

回答

6

你可以做到這一點與sed

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

(也許更安全的做

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

如果你想擴展這個)

+0

感謝您的快速響應 – Sijith 2012-04-09 08:09:58

+0

這將所有第一個字符轉換爲小寫,但不能替換文件中的舊Caps字符串。是否有可能檢查上層並在相同的文件中相應地替換 – Sijith 2012-04-09 08:12:11

+0

我不明白你的意思。這就是你的問題所說的:「將每行的第一個字母轉換爲小寫直到文件結尾」 – Mat 2012-04-09 08:42:07

2

嘗試:

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

純猛砸4.0+,參數替代:

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

這裏只使用單個sed命令POSIX sed特性:

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

這些是兩行,第一行以反斜槓結尾以引用換行符。

相關問題