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

9
我希望将每行的第一个字母转换为小写,直到文件结尾。如何使用shell脚本实现?
我尝试了以下代码:
plat=`echo $plat |cut -c1 |tr [:upper:] [:lower:]``echo $plat |cut -c2-`

但这只会将第一个字符转换为小写。
我的文件长这样:
Apple
Orange
Grape

预期结果:

apple
orange
grape
4个回答

12

你可以使用sed来做到这一点:

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

(最好还是这样做)

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

如果您将来想要扩展它。


这将所有的首字母转换为小写,但不会替换文件中旧的大写字符串。是否可能在同一文件中检查并相应地替换大写字符串? - Sijith
我不明白你的意思。这个程序会按照你的要求将每行的第一个字母转换为小写,直到文件末尾。 - Mat
2
这是 POSIX sed 还是使用 GNU 扩展?在我的 Mac OS X 上这并没有起作用。 - Eliot

2

尝试:

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

2

纯Bash 4.0+,参数替换:

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

0

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接