我想將每行的第一個字母轉換爲小寫,直到文件結尾。我如何使用shell腳本執行此操作?將給定文件的第一個字母轉換爲小寫
我嘗試這樣做:
plat=`echo $plat |cut -c1 |tr [:upper:] [:lower:]``echo $plat |cut -c2-`
但這只是第一個字符轉換爲小寫。
我的文件是這樣的:
Apple
Orange
Grape
預期結果:
apple
orange
grape
我想將每行的第一個字母轉換爲小寫,直到文件結尾。我如何使用shell腳本執行此操作?將給定文件的第一個字母轉換爲小寫
我嘗試這樣做:
plat=`echo $plat |cut -c1 |tr [:upper:] [:lower:]``echo $plat |cut -c2-`
但這只是第一個字符轉換爲小寫。
我的文件是這樣的:
Apple
Orange
Grape
預期結果:
apple
orange
grape
你可以做到這一點與sed
:
sed -e 's/./\L&/' Shell.txt
(也許更安全的做
sed -e 's/^./\L&\E/' Shell.txt
如果你想擴展這個)
嘗試:
plat=`echo $plat |cut -c1 |tr '[:upper:]' '[:lower:]'``echo $plat |cut -c2-`
純猛砸4.0+,參數替代:
>"$outfile" # empty output file
while read ; do
echo "${REPLY,}" >> "$outfile" # 1. character to lowercase
done < "$infile"
mv "$outfile" "$infile"
這裏只使用單個sed命令POSIX sed特性:
sed -e 'h;s,^\(.\).*$,\1,;y,ABCDEFGHIJKLMNOPQRSTUVWXYZ,abcdefghijklmnopqrstuvwxyz,;G;s,\
.,,'
這些是兩行,第一行以反斜槓結尾以引用換行符。
感謝您的快速響應 – Sijith 2012-04-09 08:09:58
這將所有第一個字符轉換爲小寫,但不能替換文件中的舊Caps字符串。是否有可能檢查上層並在相同的文件中相應地替換 – Sijith 2012-04-09 08:12:11
我不明白你的意思。這就是你的問題所說的:「將每行的第一個字母轉換爲小寫直到文件結尾」 – Mat 2012-04-09 08:42:07