9

我想将每行的第一个字母转换为小写直到文件末尾。如何使用 shell 脚本来做到这一点?

我试过这个:

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

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

我的文件如下所示:

Apple
Orange
Grape

预期结果:

apple
orange
grape
4

4 回答 4

12

你可以这样做sed

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

(可能更安全

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

如果你想扩展它。)

于 2012-04-09T08:01:23.563 回答
2

尝试:

plat=`echo $plat |cut -c1 |tr '[:upper:]' '[:lower:]'``echo $plat |cut -c2-`
于 2012-04-09T08:01:44.583 回答
2

纯 Bash 4.0+ ,参数替换:

>"$outfile"                         # empty output file
while read ; do
    echo "${REPLY,}" >> "$outfile"  # 1. character to lowercase
done < "$infile"  
mv "$outfile" "$infile"
于 2012-04-09T08:23:57.413 回答
0

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

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

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

于 2017-09-20T13:44:01.360 回答