将给定文件的第一个字母转换为小写

时间:2012-04-09 07:49:47

标签: linux bash shell

我想将每行的第一个字母转换为小写,直到文件末尾。如何使用shell脚本执行此操作?

我试过了:

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

但这只会将第一个字符转换为小写字母。

我的文件如下:

Apple
Orange
Grape

预期结果:

apple
orange
grape

4 个答案:

答案 0 :(得分:8)

您可以使用sed

执行此操作
sed -e 's/./\L&/' Shell.txt

(可能更安全

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

如果你想延长它。)

答案 1 :(得分:2)

尝试:

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

答案 2 :(得分:2)

Pure Bash 4.0+,参数替换:

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

答案 3 :(得分:0)

这是一个仅使用POSIX sed功能的单个sed命令:

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

这两行是第一行,以反斜杠结尾以引用换行符。